使用Fluent API和ObjectContext生成DataAnnotations

时间:2011-04-04 21:32:55

标签: asp.net-mvc entity-framework fluent

我正在使用MVC 3和Entity Framework 4构建应用程序。 我创建了我的实体数据模型并从中生成了一个数据库。 现在我知道可以在模型属性上使用[Required]或[StringLength(5)]等验证属性来提供客户端和服务器端的验证。

我想知道这些属性是否也可以动态生成,而不必明确地将它们添加到模型中?我在EF 4.1 RC中看到,您可以使用Fluent API通过使用DbModelBuilder类在OnModelCreating方法中进一步配置模型。 如图所示here 我正在使用一个框架,但仍使用ObjectContext而不是DbContext,所以我想知道上述解决方案是否可以与ObjectContext结合使用?

作为最后一点,由于我一直在试图弄清楚如何生成和使用数据注释,因此使用视图模型会增加验证的复杂性。从我阅读 here开始,似乎只是将模型直接传递给视图就不需要为模型和视图模型添加注释。但是,这意味着当您对模型进行连接并将它们直接传递给视图时,您不能再使用强类型视图?

2 个答案:

答案 0 :(得分:0)

不,不能。 Fluent API是描述映射的不同方法。您可以使用流畅的API或EDMX(实体数据模型)。不是都。 Fluent API也仅适用于DbContext API。如果要生成注释,可以尝试修改生成类的T4模板。

答案 1 :(得分:0)

当使用扩展基类的poco类时,我遇到了一个令人不安的问题。 例如,假设您有一个具有强类型Car属性的Person poco类。您还有一个Spouse poco也使用Car Property。

现在您想使用Display(“Name = xxx”)属性在视图中显示“Person Car”和“Spouses Car”。你不能!如果您不使用平面视图模型,请注意此问题