如何将表名映射到EF实体?
问题描述:
我一直在使用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)
答
使用属性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;}
}
如果你实际上并不想执行的迁移,我建议他们创造无论如何,并在运行它们之前注释掉相关的代码。这样,当你确实想要运行它们时,你将很好地设置场合。
答
您可以通过覆盖称为OnModelCreating
方法在你的DbContext定义实体地图:
然后你可以添加一些类似于地图:
modelBuilder.Entity<Order>(m => {
m.ToTable("MyTable", "dbo");
})
信息:https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables
编辑:我不知道比如直接向我的实体添加注释,因为我更喜欢将它集中在一个地方。更易于管理。毕竟我想这是偏好的问题:)
你可以在你的实体上使用[Table(“MyTable”)]属性? – MstfAsan
https://stackoverflow.com/help/how-to-ask – Kixoka