我尝试使用Code首先在现有数据库中的解决方案中实现通用存储库。当我尝试做一个Context.Set时,我得到一个错误,指出"实体类型不是当前上下文模型的一部分"。我错过了什么?
public partial class CPContext : DbContext
{
public CPContext()
: base("name=CPContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
型号:
[Table("Core.Tenant")]
public partial class Tenant : IEntity
{
}
用法:
var context = new CPContext();
var dbSet = context.Set<Tenant>();
var results = dbSet.ToList();
这会抛出错误 - 实体类型不是当前上下文的模型的一部分
我能够通过更改Context的OnModelCreating事件来实现它 -
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Tenant>().ToTable("Core.Tenant");
}
但我不确定为什么在为表名使用数据注释时需要执行上述操作?完全迷失在这里
答案 0 :(得分:1)
您在上下文中缺少DbSet。
public partial class CPContext : DbContext
{
public DbSet<Tenant> Tenants { get; set;}
public CPContext()
: base("name=CPContext")
{
}
这就是注释映射不起作用的原因。 EF无法知道它必须映射该类。