既存のデータベースから作成されたすべてのエンティティが同じインターフェイスから継承されるようにしたいと考えています。
これはテンプレートを介して行うことができると思います。そして、私はその醜い.tt
ファイルを見てきましたが、助けはありません (または、私はそれを見つけていません)。
テンプレートのドキュメント、例などはありますか?
N 層設計やドメイン駆動設計など、一般的なパラダイムのヒントや既製のテンプレートはありますか?
既存のデータベースから作成されたすべてのエンティティが同じインターフェイスから継承されるようにしたいと考えています。
これはテンプレートを介して行うことができると思います。そして、私はその醜い.tt
ファイルを見てきましたが、助けはありません (または、私はそれを見つけていません)。
テンプレートのドキュメント、例などはありますか?
N 層設計やドメイン駆動設計など、一般的なパラダイムのヒントや既製のテンプレートはありますか?
「T4 テンプレート」を探します。これにより、T4 テンプレート (.tt
ファイル) の概要が説明されます。少し検索するだけで、このテンプレートを必要に応じて簡単に拡張できます。私はすでにこれを自分で行いましたが、EF4 のテンプレートを使用しました。テンプレが違うのかは知らん
このための小さなヘルパー関数を作成しました。
string Interfaces(EntityType entity)
{
string interfaces = string.Empty;
if (entity.Members.OfType<EdmProperty>().Any(edmProperty => edmProperty.Name == "Guid" && ((PrimitiveType)edmProperty.TypeUsage.EdmType).PrimitiveTypeKind == PrimitiveTypeKind.Guid))
{
interfaces += ", IHasWritableGuid";
}
return interfaces;
}
テンプレートが実際のエンティティ クラスを記述する部分 (これは新しいテンプレートでは確かに異なります) はWrite EntityType classes.
、EF4 テンプレートの " " よりもやや下にあります。
<#=Accessibility.ForType(entity)#>
<#=code.SpaceAfter(code.AbstractOption(entity))#>
partial class
<#=code.Escape(entity)#> :
<#=BaseTypeName(entity, code)#>
<#= Interfaces(entity) #>
ここでは、interfaces メソッドへの呼び出しを追加しました。
これが正確な答えではないことはわかっていますが、テンプレート ファイルを自分で編集する際に役立つはずです。噛み砕いてください。:)