如何在Microsoft MVC2中的自动生成实体上实现业务逻辑?

时间:2011-01-28 16:39:08

标签: asp.net-mvc-2

我是MVC的新手,我正在试图弄清楚如何在MVC项目中自动生成的实体中实现业务逻辑。

我知道如果我创建自己的Model类,我可以将[Required]和其他属性放在字段上,但似乎没有在.edmx文件中执行此操作的选项。

这里有什么我想念的吗?

我应该创建自己的使用实体的类并将逻辑放在那里吗? 似乎我应该有办法减少工作量。

谢谢!

1 个答案:

答案 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类中有任何属性名称与实现类型不匹配,则会出现运行时错误。您只需要在伙伴类中为您有兴趣应用业务规则的属性创建匹配属性;所有属性都是可选的。