有很多关于 Fluent API 的教程,但它们都使用 Entity Framework Code-First 代码示例进行解释。由于我不了解 Code-First,您是否知道任何 Fluent API 教程可以使用 EF Database-First 方法解释该主题?
谢谢
最佳答案
没有将 Fluent API 与数据库优先方法一起解释的教程,因为 Fluent API 仅适用于代码优先方法。如果您想通过 Database-First 创建模型,则不需要 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 的特点:
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- 或 Model-First,并且元数据是在嵌入式 EDMX 中定义的,而不是在 Fluent API 中定义的。但是,您可以从连接字符串中删除元数据部分,删除
UnintentionalCodeFirstException
并在 OnModelCreating
中使用 Fluent API 编写代码.您可以按照此过程通过 Database-First 创建初始模型,然后在此初始模型的基础上使用 Code-First 进行进一步开发。在这一点上,您不再使用数据库优先,而是代码优先,您阅读的有关 Fluent API 的所有内容都对您有效。
关于entity-framework - 任何使用 EF 数据库优先方法来解释该主题的 Fluent API 教程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234094/