gpt4 book ai didi

c# - 为 Entity Framework (或 Linq to SQL)生成的类添加数据注释

转载 作者:太空狗 更新时间:2023-10-29 20:18:00 25 4
gpt4 key购买 nike

是否可以添加更多Data Anootation 成员如Range,Required,...到Entity FrameworkLinq to SQL 自动生成类?

我想为我的类使用数据注释验证

谢谢

重要:与此主题相关:using Metadata with Entity Framework to validate using Data Annotation

编辑 1)

我为 Northwind 数据库创建了一个 Entity Framework 模型,并添加了 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;

}

最佳答案

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

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

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

[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
}

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

关于c# - 为 Entity Framework (或 Linq to SQL)生成的类添加数据注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7978608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com