关于 Fluent API 的教程有很多,但它们都使用 Entity Framework Code-First 代码示例进行解释。由于我不了解代码优先,您是否知道任何 Fluent API 教程可以使用 EF 数据库优先方法解释该主题?
谢谢
没有教程可以解释 Fluent API 和数据库优先方法,因为 Fluent API 仅为代码优先方法而设计。如果您想通过数据库优先创建模型,则不需要 Fluent API。
Fluent API(连同 Code-First 数据注释和约定)是一种在代码中定义模型详细信息的工具,例如字符串长度、是否需要属性或关系类型 - 多对多、一对多当使用 Database-First 或 Model-First 时,EDMX 文件具有相同的用途 - 它包含模型的所有详细信息和映射定义。 Fluent API(+数据注释和约定)仅在使用 Code-First 时替换 EDMX 文件。
如果您通过 Database-First 或 Model-First 创建模型,您将拥有一个代表您的模型的 EDMX 文件。您可以将 T4 DbContext Generator 应用于此 EDMX 文件。生成的文件有两个与 Code-First 不同的特征:
-
生成的连接字符串包含引用 EDMX 元数据的部分,该元数据将嵌入到程序集中:
connectionString="metadata=res://*/Model.csdl
|res://*/Model.ssdl
|res://*/Model.msl;
..."
-
生成的上下文DbContext
将有一个被覆盖的OnModelCreating
只抛出异常的方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
只要您将元数据部分保留在连接字符串中,EF 就不会调用OnModelCreating
或此方法中 Fluent API 中的任何代码。元数据部分告诉 EF 您的模型是 DB 优先或模型优先,并且元数据是在嵌入式 EDMX 中定义的,而不是在 Fluent API 中定义的。
但是,您可以从连接字符串中删除元数据部分,删除UnintentionalCodeFirstException
并使用 Fluent API 编写代码OnModelCreating
。您可以按照此过程通过 Database-First 创建初始模型,然后在此初始模型的基础上使用 Code-First 进行进一步开发。
此时,您不再使用数据库优先,而是使用代码优先,并且您阅读的有关 Fluent API 的所有内容都对您有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)