たとえば、生成されたエンティティ クラスの特定のプロパティを、(たとえば) 検証属性 (および Linq To SQL 列属性) で装飾する必要があると何らかの方法で言えると非常に便利です。
どこかのT4テンプレートですか?または、猫の皮を剥ぐ他の方法はありますか?
たとえば、生成されたエンティティ クラスの特定のプロパティを、(たとえば) 検証属性 (および Linq To SQL 列属性) で装飾する必要があると何らかの方法で言えると非常に便利です。
どこかのT4テンプレートですか?または、猫の皮を剥ぐ他の方法はありますか?
Damien Guard は、カスタマイズ可能な T4 テンプレートを作成しました。見る:
http://damieng.com/blog/2008/09/14/linq-to-sql-template-for-visual-studio-2008
...と:
残念ながら、部分クラスでは、部分クラスの別の部分からメンバーに属性を追加することはできません。つまり、SqlMetalがプロパティを定義している場合、の自分の半分にFoo
属性を追加することはできません。Foo
.cs
これにより、(通常)そのようなファイルをカスタマイズするためのより強力な方法の1つが失われます...おそらくチャンスをつかんで生成されたファイルを手動で編集する必要があります(dbmlから完全にデタッチした後)-または独自のdbmlを作成するパーサーfrmoスクラッチ(多分xsltを使用)。簡単ではありません。
動的データの回避策は、装飾可能なメタデータクラスを使用することです。
[MetadataType(typeof(Product_Meta))]
public partial class Product
{
public partial class Product_Meta
{
[Range(5, 50, ErrorMessage = "The product's reorder level must be greater than 5 and less than 50")]
public object ReorderLevel { get; set; }
}
}
いいえ、SqlMetal ツールは C# の生成を処理するものであり、C# がどのように生成されるか (または VB) が内部で定義されます。
私はあなたが望むテンプレートスタイルに精通していませんが、生成されたクラスは部分クラスであるため、(それほど大きな変更がない場合) 拡張を試すことができます。
それ以外の場合は、SqlMetal のカスタム実装を作成/検索する必要があります