如何将表名映射到EF Entity?

时间:2017-10-20 11:40:24

标签: entity-framework automapper aspnetboilerplate

我已经使用EF Code First一个月了。我的项目需要使用许多表(超过100个数据表),并且将来会多次更改它们。很难控制并花时间添加迁移。

那么是否有任何解决方案可以跳过添加迁移步骤,只需在数据库中创建表并创建到实体的映射?

示例:

在数据库中我有一个这样的表:

Failed to execute operation: Too many levels of symbolic links

我想将它映射到以下实体:

CREATE TABLE dbo.MyTable
(
    Id INT,
    Name VARCHAR(255),
    Description VARCHAR(1000)
);

我期望的解决方案是这样的:

public class MyEntity
{
   public Id int {get; set;}
   public Name string {get; set;}
   public Description string {get; set;}
}

2 个答案:

答案 0 :(得分:2)

使用属性System.ComponentModel.DataAnnotations.Schema.Table

[Table("MyTable")]
public class MyEntity
{
   public Id int {get; set;}
   public Name string {get; set;}
   public Description string {get; set;}
}

如果您实际上并不想运行迁移,我建议您先创建它们并在运行之前注释掉相关代码。这样,当你真正想要运行它们时,你就可以很好地设置它。

答案 1 :(得分:1)

您可以通过覆盖DbContext中名为OnModelCreating的方法来定义实体映射:

然后你可以添加一些类似于:

的地图
modelBuilder.Entity<Order>(m => {
     m.ToTable("MyTable", "dbo");
})

信息:https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables

编辑:我不喜欢直接向我的实体添加注释,因为我更喜欢将注释集中在一个地方。更易于管理。毕竟我想这是一个偏好问题:)