2016-06-14 10 views
0

私は約50のデータベースを持ち、それぞれ150のテーブルを持ち、特定の列を持つ表を照会します。ほとんどのデータベース構造は同じですので、EFエンティティを生成し、生成されたテーブルに特定の列がある場合は生成されたエンティティの背後にインターフェイスを置くことで、後でその列を照会することができます。T4 .ttテンプレートを編集して特定のプロパティ(列名)を持つ最初に生成されたエンティティをEFデータベースに自動的に追加する方法

モデルが頻繁に変更されるため、テーブルに手動でインターフェイスを追加することはできません。T4テンプレートがここにあります。

私は私の道を、以下でEntityClassOpening方法を変更.ttファイルでは、彼らは

答えて

2

から生成されているテーブルにカラム名に基づいてエンティティにインターフェイスを追加することができるようになるメカニズムを探しています。

stringsToMatch辞書keyは表の列名で、valueはエンティティ生成時に入力したいインターフェイスです。

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); 
} 

希望すれば、時間を節約できます。

関連する問題