有许多关于Fluent API的教程,但它们都使用实体框架代码优先代码示例进行了解释。既然我不知道Code-First,你知道有什么流利的API教程可以使用EF Database-First方法来解释这个主题吗?
谢谢
发布于 2012-04-20 05:39:54
没有教程将Fluent API与数据库优先方法一起解释,因为Fluent API仅适用于代码优先方法。如果您想通过Database-First创建模型,则不需要Fluent API。
Fluent API (连同Code-First数据注释和约定)是一个在代码中定义模型细节的工具,比如字符串长度,如果一个属性是必需的,或者关系的类型是多对多、一对多等。Fluent API (+数据注释和约定)仅在使用Code-First时才会替换EDMX文件。
如果通过Database-First或Model-First创建模型,您将拥有一个表示模型的EDMX文件。您可以将T4 DbContext生成器应用于此EDMX文件。生成的文件有两个不同于Code-First的特征:
connectionString="metadata=res://*/Model.csdl |res://*/Model.ssdl |res://*/Model.msl;...“
DbContext将有一个被覆盖的OnModelCreating方法,该方法只会抛出一个异常:protected override void OnModelCreating(DbModelBuilder modelBuilder) {抛出新的UnintentionalCodeFirstException();}
只要您将元数据部分留在连接字符串中,EF甚至不会在此方法中调用OnModelCreating或Fluent API中的任何代码。元数据部分告诉EF,您的模型是DB-或Model-First,元数据是在嵌入式EDMX中定义的,而不是在Fluent API中定义的。
但是,您可以删除连接字符串中的元数据部分,删除UnintentionalCodeFirstException并在OnModelCreating中使用Fluent API编写代码。您可以按照此过程通过Database-First创建初始模型,然后在此初始模型的基础上进行进一步的Code-First开发。
此时,您不再使用Database-First,而是Code-First,您读到的关于Fluent API的所有内容对您都是有效的。
发布于 2013-02-21 01:31:58
有一个有趣的帖子是关于在不使用实际的“数据库优先”方法本身的情况下实现一些“数据库优先”目标的。
http://agilenet.wordpress.com/2011/04/11/entity-framework-4-1-rc-with-an-existing-database/
作者使用了“Code-First”和“Fluent API”,但禁用了数据库和表的自动生成和播种。
他分享了一个示例,展示了“如何创建实体模型,然后手动创建数据库,然后将这些实体映射到数据库。最后展示了如何使用DatabaseContext来保存和检索实体。
他创建了一个“在实体和数据库之间映射的每个实体的配置类”的部分非常酷。该步骤将替换在采用正式的“数据库优先”方法时生成的“edmx”文件。
发布于 2012-04-20 05:39:31
本教程是由6部分组成的数据库第一教程系列中的一部分,包括一些流畅的API示例:
http://www.asp.net/web-forms/tutorials/continuing-with-ef/using-the-entity-framework-and-the-objectdatasource-control-part-3-sorting-and-filtering
https://stackoverflow.com/questions/10234094
复制相似问题