我想建议使用EF T4 POCO Generator生成的模型,并利用其中的验证属性,就像MVC项目中的/ Models中的普通模型一样。
背景: 我们正在尝试设计一个Web应用程序,2或3个开发人员将使用它。它是一种scrum风格,我们在构建Web应用程序时定期从客户端获得需求修改。表,列和关系可能会相应改变。
我们的方法: 我们希望使用EF T4 POCO Generation,因为每次将新表和列添加到数据库时,EF T4都可以自动更新POCO模型。我们希望将这些POCO模型用作MVC项目的模型层(在不同的Models.dll中并将其包含在项目中,而不是位于MVC项目的/ Models /文件夹中)。
问题: 我们想要为模型类和属性添加属性。但是,EF T4将覆盖模型类,我们不能(并且不认为我们应该)将这些属性添加到这些模型中。我们不知道什么是正确的方法。
我只能想到在MVC项目中的包装器ViewModels中创建属性。它们包含了EF T4完成的Models.dll中所有必要的模型。然后将属性放在它们前面。但是对我来说,打败DRY原则看起来很难看。你会怎么做?感谢您的想法!
---编辑--- 我找到了一个很酷的技巧here来帮助我的包装理念。但是,我没有提到它,因为我想开放看到不同的建议并进行比较:)
答案 0 :(得分:2)
使用好友类。您的EF类生成为partials。创建另一个部分类,并使用MetadataType
属性对其进行注释。
[MetadataType(typeof(FriendMeta))]
public partial class Friend
{
}
然后,您可以将数据注释属性添加到伙伴类中的同名属性。
public class FriendMeta
{
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("Date of Birth")]
public DateTime BrithDate { get; set; }
}
ASP.NET MVC元数据提供程序将为您选择这些属性。