2017-10-20 105 views
0

我一直在使用EF Code First 1个月。我的项目需要与许多表(超过100个数据表)一起工作,他们将来会多次更改。很难控制,需要时间来添加迁移。如何将表名映射到EF实体?

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

例子:

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

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;} 
} 

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

CreateMap("dbo.MyTable", MyEntity) 
+1

你可以在你的实体上使用[Table(“MyTable”)]属性? – MstfAsan

+0

https://stackoverflow.com/help/how-to-ask – Kixoka

回答

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

您可以通过覆盖称为OnModelCreating方法在你的DbContext定义实体地图:

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

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

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

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