【问题标题】:How to read entity table name and primary key definition from fluent API如何从 fluent API 中读取实体表名和主键定义
【发布时间】:2016-04-18 22:59:25
【问题描述】:

我们正在使用带有 FluentAPI 配置的 EF。我们的目标是创建一个国际化结构,允许创建包含多个成语中项目名称和描述的表格。

但是为了让程序员更简单,这个想法是创建一些函数来接收实体定义和被国际化的属性,根据这个示例:

public static new void CreateModel(DbModelBuilder modelBuilder)
{
   modelBuilder.Entity<City>().ToTable("Cities", "Common");
   modelBuilder.Entity<City>().Property(p => p.Acronym).HasMaxLength(20);
   modelBuilder.Entity<City>().Property(p => p.Acronym).IsOptional();
   modelBuilder.Entity<City>().Property(p => p.Name).IsRequired();
   modelBuilder.Entity<City>().HasRequired(c => c.State).WithMany(c => c.Cities).HasForeignKey(c => c.StateId);

   BuildLocalizedTable(modelBuilder, modelBuilder.Entity<City>, modelBuilder.Entity<City>().Property(p => p.Name));
}

在此代码中,您有实体CityBuildLocalizedTable() 函数应从父实体读取表名和主键定义,并声明依赖实体、属性和导航以具有名称City 在任何其他成语中。

经过大量研究,我找不到任何示例来读取实体定义,而不是编写。这可能吗?

【问题讨论】:

    标签: c# entity-framework fluent


    【解决方案1】:

    当您使用 EF Code-First 方法时,可以使用 Fluent API。
    Code-First 将根据您的实体类和配置动态创建数据库。
    我们可以使用 DataAnnotations 或 Fluent API 进行配置,但最后一个提供了更多功能。

    无法使用 Fluent API 读取实体定义,因为它仅用于配置新实体。我们使用 Code-First,所以我们没有任何关于数据库的信息,因为我们首先编写类开始,然后 Code First API 将创建新数据库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      相关资源
      最近更新 更多