我已经使用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;}
}
答案 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
编辑:我不喜欢直接向我的实体添加注释,因为我更喜欢将注释集中在一个地方。更易于管理。毕竟我想这是一个偏好问题:)