如何使用Entity Framework Code First Fluent API指定表名

bai*_*rog 79 c# entity-framework code-first ef-code-first

我有一个实体,我将配置实体框架将其映射到具有不同名称的数据库表.

我可以使用Code First DataAnnotations(DataAnnotations.Schema.TableAttribute)轻松完成此操作.

但由于现在的限制,我必须使用Code First Fluent API(我的域对象将由外部客户端使用,因此它们不应该是特定于技术的 - 例如,对DataAnnotations有任何引用)

我在MSDN上搜索但没有发现任何内容.那有可能吗?怎么样?

谢谢.

Ass*_* S. 205

您还可以使用表注释:

[Table("InternalBlogs")]
public class Blog
Run Code Online (Sandbox Code Playgroud)

请参阅: 代码优先数据注释

  • Thx,但是如果你仔细阅读我的问题 - 你会直接在中间看到apptoach :) (6认同)
  • 即使注释名为"表",它似乎也适用于视图和表. (2认同)
  • 这怎么得到更多的赞成票,问题明确要求流畅的 api 版本 (2认同)

小智 83

你将使用这个.ToTable()方法:

modelBuilder.Entity<Department>().ToTable("t_Department");   
Run Code Online (Sandbox Code Playgroud)

来源:MSDN:http://msdn.microsoft.com/en-us/data/jj591617.aspx


ale*_*mac 7

使用ToTable方法:

public class MyEntityMap : EntityTypeConfiguration<MyEntity>
{
    public const string TableName = "MyEntity";

    public MyEntityMap()
    {                   
        ToTable(TableName);

        Property(t => t.Id);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 但是在你的 `OnModelCreating` 方法中你必须这样做:`modelBuilder.Configurations.Add(new MyEntityMap());` 在这里你可以添加一个 `modelBuilder.Entity&lt;MyEntity&gt;().ToTable("MyEntityTable("MyEntityTable) ");` 所以不,这不是更简洁的方法,除非您还为该实体执行其他映射。 (2认同)