我是MVC的新手,我試圖弄清楚如何在MVC項目中的自動生成的實體中實現業務邏輯。如何在Microsoft MVC2的自動生成實體上實現業務邏輯?
我知道,如果我創建自己的模型類,我可以將[Required]
和其他屬性放在字段上,但似乎沒有選項可以在.edmx文件中執行此操作。
有什麼我在這裏失蹤?
我應該創建自己的類,使用實體並將邏輯放在那裏? 似乎應該有辦法讓我少做點工作。
謝謝!
我是MVC的新手,我試圖弄清楚如何在MVC項目中的自動生成的實體中實現業務邏輯。如何在Microsoft MVC2的自動生成實體上實現業務邏輯?
我知道,如果我創建自己的模型類,我可以將[Required]
和其他屬性放在字段上,但似乎沒有選項可以在.edmx文件中執行此操作。
有什麼我在這裏失蹤?
我應該創建自己的類,使用實體並將邏輯放在那裏? 似乎應該有辦法讓我少做點工作。
謝謝!
這可以通過在.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; }
}
}
在上面的例子中,假設你已經在其中具有屬性「名稱」,「價格」和「說明」你的對象上下文定義的「品」字型。只要MetadataTypeAttribute引用的好友類類型具有匹配的屬性名稱,應用於好友類中屬性的屬性將應用於實現類型。
注意:如果buddy類中有任何屬性名稱與實現類型不匹配,您將收到運行時錯誤。您只需在夥伴類中爲您有興趣應用業務規則的屬性創建匹配屬性;所有屬性都是可選的。
非常好,這是正是我所期待的。 – 2011-01-28 17:30:30
看這裏:http://stackoverflow.com/questions/4619609/what-is-the-best-way-to-add-attributes-to-auto-generated-entities-using-vs2010 – Lazarus 2011-01-28 16:47:02