如何将 table 名称映射到 EF 实体?
How to map table name to EF Entity?
我已经使用 EF Code First 1 个月了。我的项目需要处理许多 tables(超过 100 tables 的数据)并且它们将来会更改很多次。很难控制,需要时间来添加迁移。
那么有没有跳过添加迁移步骤的解决方案,只需在数据库中创建 table 并创建到实体的映射?
示例:
在数据库中我有一个 table 这样的:
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)
您可以通过覆盖 DbContext 中名为 OnModelCreating
的方法来定义实体映射:
然后您可以添加一些类似于以下的地图:
modelBuilder.Entity<Order>(m => {
m.ToTable("MyTable", "dbo");
})
信息:https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables
编辑:我不喜欢直接向我的实体添加注释,因为我更喜欢将它集中在一个地方。更易于管理。毕竟我想这是一个偏好问题:)
使用属性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;}
}
如果您实际上不想 运行 迁移,我建议您创建它们并在 运行 它们之前注释掉相关代码。这样,当您确实想要 运行 他们时,您就可以很好地应对这种情况。
我已经使用 EF Code First 1 个月了。我的项目需要处理许多 tables(超过 100 tables 的数据)并且它们将来会更改很多次。很难控制,需要时间来添加迁移。
那么有没有跳过添加迁移步骤的解决方案,只需在数据库中创建 table 并创建到实体的映射?
示例:
在数据库中我有一个 table 这样的:
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)
您可以通过覆盖 DbContext 中名为 OnModelCreating
的方法来定义实体映射:
然后您可以添加一些类似于以下的地图:
modelBuilder.Entity<Order>(m => {
m.ToTable("MyTable", "dbo");
})
信息:https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables
编辑:我不喜欢直接向我的实体添加注释,因为我更喜欢将它集中在一个地方。更易于管理。毕竟我想这是一个偏好问题:)
使用属性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;}
}
如果您实际上不想 运行 迁移,我建议您创建它们并在 运行 它们之前注释掉相关代码。这样,当您确实想要 运行 他们时,您就可以很好地应对这种情况。