1

我想要一些使用 EF T4 POCO 生成器生成的模型的建议,并像 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 原则很丑陋。你会怎么做?提前感谢您的想法!

--- 编辑 --- 我确实在这里找到了一个很酷的技巧帮助我的包装想法。但是,我没有提及它,因为我想开放地查看不同的建议并进行比较:)

4

1 回答 1

2

使用伙伴课程。您的 EF 类作为部分生成。创建另一个部分类并使用MetadataType属性对其进行注释。

[MetadataType(typeof(FriendMeta))]
public partial class Friend
{
}

然后可以在buddy类的同名属性中添加数据注解属性。

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 元数据提供程序将为您选择这些属性。

于 2012-05-21T17:00:13.047 回答