首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有流利的API教程使用EF数据库优先的方法来解释这个主题?

有没有流利的API教程使用EF数据库优先的方法来解释这个主题?
EN

Stack Overflow用户
提问于 2012-04-20 02:05:22
回答 3查看 6.4K关注 0票数 6

有许多关于Fluent API的教程,但它们都使用实体框架代码优先代码示例进行了解释。既然我不知道Code-First,你知道有什么流利的API教程可以使用EF Database-First方法来解释这个主题吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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的特征:

  • 生成的连接字符串包含一个引用EDMX元数据的部分,该元数据将嵌入到程序集中:

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的所有内容对您都是有效的。

票数 8
EN

Stack Overflow用户

发布于 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”文件。

票数 2
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10234094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档