添加数据注释到Entity Framework(或Linq to SQL)生成的类

是否可以自动将更多Data Anootation成员(如RangeRequired ,…)添加到Entity FrameworkLinq to SQL生成的类?

我想对我的类使用数据注释validation

谢谢

要点:与此主题相关: 使用元数据和entity framework来validation使用数据注释

编辑1)

我为Northwind数据库创建一个entity framework模型并添加Product类。代码的一部分是这样的:

 [EdmEntityTypeAttribute(NamespaceName="NorthwindModel", Name="Product")] [Serializable()] [DataContractAttribute(IsReference=true)] public partial class Product : EntityObject { #region Factory Method ///  /// Create a new Product object. ///  /// Initial value of the ProductID property. /// Initial value of the ProductName property. /// Initial value of the Discontinued property. public static Product CreateProduct(global::System.Int32 productID, global::System.String productName, global::System.Boolean discontinued) { Product product = new Product(); product.ProductID = productID; product.ProductName = productName; product.Discontinued = discontinued; return product; } #endregion #region Primitive Properties ///  /// No Metadata Documentation available. ///  [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] [DataMemberAttribute()] public global::System.Int32 ProductID { get { return _ProductID; } set { if (_ProductID != value) { OnProductIDChanging(value); ReportPropertyChanging("ProductID"); _ProductID = StructuralObject.SetValidValue(value); ReportPropertyChanged("ProductID"); OnProductIDChanged(); } } } private global::System.Int32 _ProductID; partial void OnProductIDChanging(global::System.Int32 value); partial void OnProductIDChanged(); 

我希望ProductID是必需的但我无法以这种方式编写代码:

 public partial class Product { [Required(ErrorMessage="nima")] public global::System.Int32 ProductID; } 

是。 您需要为每个实体创建第二个分部类,并将其链接到具有替代属性的辅助类。

假设您有一个生成的partial class Customer { public string Name { get; set; } } partial class Customer { public string Name { get; set; } }
生成的类将始终标记为partial。

然后你需要添加一个文件:

 [MetadataType(typeof(CustomerMetadata))] public partial class Customer { // it's possible to add logic and non-mapped properties here } public class CustomerMetadata { [Required(ErrorMessage="Name is required")] public object Name { get; set; } // note the 'object' type, can be anything } 

我个人认为这不是一个非常优雅的解决方案,但它有效。