Entity Framework
entity-frameworkの.t4テンプレート
サーチ…
モデルに動的にインターフェイスを追加する
抽象化が必要な場合にはかなり大きい既存のモデルを使用して作業する場合、インターフェイスを使用してモデルを改装するのは手間がかかります。このような場合、モデル生成に動的な振る舞いを追加することができます。
次の例では、特定の列名を持つクラスに自動的にインターフェイスを追加する方法を示します。
お使いのモデルにするために行く.tt
ファイルを変更EntityClassOpening
方法を、以下の方法を、これが追加されますIPolicyNumber
持つエンティティにインタフェースをPOLICY_NO
コラムを、そしてIUniqueId
にUNIQUE_ID
public string EntityClassOpening(EntityType entity)
{
var stringsToMatch = new Dictionary<string,string> { { "POLICY_NO", "IPolicyNumber" }, { "UNIQUE_ID", "IUniqueId" } };
return string.Format(
CultureInfo.InvariantCulture,
"{0} {1}partial class {2}{3}{4}",
Accessibility.ForType(entity),
_code.SpaceAfter(_code.AbstractOption(entity)),
_code.Escape(entity),
_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)),
stringsToMatch.Any(o => entity.Properties.Any(n => n.Name == o.Key)) ? " : " + string.Join(", ", stringsToMatch.Join(entity.Properties, l => l.Key, r => r.Name, (l,r) => l.Value)) : string.Empty);
}
これは特定のケースですが、 .tt
テンプレートを変更できるという能力を示しています。
エンティティクラスへのXMLドキュメントの追加
生成されたすべてのモデルクラスには、デフォルトで追加されたドキュメンテーションコメントはありません。あなたは、すべての生成されたエンティティクラス用のXMLドキュメントコメントを使用したい場合は、[モデル名] .tt内部のこの部分を見つける( モデル名は、現在のEDMXファイル名です):
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code); // used to write model namespace
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
次の例に示すように、XMLドキュメントのコメントをUsingDirectives
行の前に追加することができます。
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
#>
/// <summary>
/// <#=entity.Name#> model entity class.
/// </summary>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
生成されたドキュメントのコメントには、次に示すエンティティ名が含まれている必要があります。
/// <summary>
/// Example model entity class.
/// </summary>
public partial class Example
{
// model contents
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow