将数据注释添加到实体框架(或 Linq to SQL)生成的类
是否可以向 Entity Framework
添加更多 Data Anootation
成员,例如 Range
、Required
... 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();
我希望 ProductID 是必需的,但我不能这样编写代码:
public partial class Product
{
[Required(ErrorMessage="nima")]
public global::System.Int32 ProductID;
}
Is it possible to add more Data Anootation
member such as Range
,Required
,... to Entity Framework
or Linq to SQL
generated classes automatically ?
I want to use data annotation validation for my classes
thanks
Important:Related to this topic: using Metadata with Entity Framework to validate using Data Annotation
EDIT 1)
I create an entity framework model for Northwind database and add Product class.a part of code is like this:
[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();
I want ProductID being Required but I can't write code this way:
public partial class Product
{
[Required(ErrorMessage="nima")]
public global::System.Int32 ProductID;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的。您需要为每个实体创建第二个部分类,并将其链接到具有替代属性的辅助类。
假设您有一个生成的部分类 Customer { public string Name { get;放; } }
生成的类将始终被标记为部分类。
然后您需要添加一个文件:
就我个人而言,我不认为这是一个非常优雅的解决方案,但它确实有效。
Yes. You need to create a 2nd partial class for each entity and link it to an auxiliary class with substitute properties.
Suppose you have a generated
partial class Customer { public string Name { get; set; } }
The generated class will always be marked as partial.
Then you need to add a file with :
Personally I don't consider this a very elegant solution but it works.