Ari*_*ian 7 c# entity-framework linq-to-sql data-annotations c#-4.0
是否有可能增加更多Data Anootation成员,例如Range,Required,...到Entity Framework或Linq to SQL自动生成的类?
我想为我的类使用数据注释验证
谢谢
编辑1)
我为Northwind数据库创建一个实体框架模型并添加Product类.代码的一部分是这样的:
[EdmEntityTypeAttribute(NamespaceName="NorthwindModel", Name="Product")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Product : EntityObject
{
#region Factory Method
/// <summary>
/// Create a new Product object.
/// </summary>
/// <param name="productID">Initial value of the ProductID property.</param>
/// <param name="productName">Initial value of the ProductName property.</param>
/// <param name="discontinued">Initial value of the Discontinued property.</param>
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
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[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();
Run Code Online (Sandbox Code Playgroud)
我希望ProductID是必需的但我无法以这种方式编写代码:
public partial class Product
{
[Required(ErrorMessage="nima")]
public global::System.Int32 ProductID;
}
Run Code Online (Sandbox Code Playgroud)
是.您需要为每个实体创建第二个分部类,并将其链接到具有替换属性的辅助类.
假设您已生成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
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我不认为这是一个非常优雅的解决方案,但它的确有效
| 归档时间: |
|
| 查看次数: |
4919 次 |
| 最近记录: |