我是MVC的新手,我正在试图弄清楚如何在MVC项目中自动生成的实体中实现业务逻辑。
我知道如果我创建自己的Model类,我可以将[Required]
和其他属性放在字段上,但似乎没有在.edmx文件中执行此操作的选项。
这里有什么我想念的吗?
我应该创建自己的使用实体的类并将逻辑放在那里吗? 似乎我应该有办法减少工作量。
谢谢!
答案 0 :(得分:2)
这可以通过使用专门为此实现的.NET中的buddy-class功能来实现。在.ebmx文件中创建实体后,您可以创建部分类,以便在“伙伴类”中定义业务规则的实体。
[MetadataType(typeof(ProductMetadata))]
public partial class Product {
internal sealed class ProductMetadata {
[DisplayName("Name")]
[Required]
public string Name { get; set; }
[DispayName("Price")]
[Required, Range(1,10000)]
public decimal Price { get; set; }
[DisplayName("Description")]
public string Description { get; set; }
}
}
在上面的示例中,假设您已在对象上下文中定义了“Product”类型,该类型具有“Name”,“Price”和“Description”的属性。只要MetadataTypeAttribute引用的伙伴类类型具有匹配的属性名称,应用于伙伴类中的属性的属性将应用于实现类型。
注意:如果buddy类中有任何属性名称与实现类型不匹配,则会出现运行时错误。您只需要在伙伴类中为您有兴趣应用业务规则的属性创建匹配属性;所有属性都是可选的。