我在.Net Standard 1.4中创建了一个DBContext类,并在OnModelCreating方法中有一些实体配置代码,但看起来这个方法没有被调用,我收到一个抱怨列名的错误。
这是我的班级:
public partial class TestContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Data Source=blah");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TestTable>().HasKey(t => t.Id).HasName("TestTableId");
modelBuilder.Entity<TestTable>().ToTable("TestTable");
}
public virtual DbSet<TestTable> TestTable { get; set; }
}
public class TestTable
{
public Guid Id { get; set; }
public string Name { get; set; }
}
当我尝试查询此TestTable时,收到错误消息invalid column name "Id"
我在表格中没有Id
,我有TestTableId
,我希望我得到的OnModelCreating
代码会处理该映射。
任何想法?
答案 0 :(得分:2)
您遇到的问题是您在命名密钥而不是列:
modelBuilder.Entity<TestTable>()
.HasKey(t => t.Id)
.HasName("TestTableId");
这将创建一个主键,然后为该键TestTableId
命名。你应该做的是:
modelBuilder.Entity<TestTable>()
.Property(t => t.Id)
.HasColumnName("TestTableId");