C# EF核心错误无效列“;鉴别器;继承
我是EF Core的新手,如果这是一个愚蠢的问题,我很抱歉。 当我尝试查询时,得到的列“Discriminator”无效C# EF核心错误无效列“;鉴别器;继承,c#,entity-framework,C#,Entity Framework,我是EF Core的新手,如果这是一个愚蠢的问题,我很抱歉。 当我尝试查询时,得到的列“Discriminator”无效 Context.EmployeeAddressNavigation.where(x =>x.Name.Contains("name")).Select(x => new {x.Id,x.employAddress}) 员工 public class Employee { public Guid Id {get;set;} public string
Context.EmployeeAddressNavigation.where(x =>x.Name.Contains("name")).Select(x => new {x.Id,x.employAddress})
员工
public class Employee
{
public Guid Id {get;set;}
public string Name {get;set;}
}
员工地址
public class EmployeeAddress
{
public Guid EmployeeId {get;set;}
public Guid AddressId {get;set;}
}
员工地址导航
public class EmployeeAddressNavigation : Employee
{
public EmpoyeeAddress employAddress {get;set;}
}
我对modelCreate进行了如下配置
override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Employee>().ToTable("employee");
modelBuilder.Entity<EmployeeAddress>().ToTable("employeeaddress");
modelBuilder.Entity<EmployeeAddressNavigation>()
.HasMany(r => r.EmployeeAddress)
.WithOne()
.HasForeignKey(r => r.EmployeeId);
}
在模型创建时覆盖void(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().ToTable(“员工”);
modelBuilder.Entity().ToTable(“employeeaddress”);
modelBuilder.Entity()
.HasMany(r=>r.EmployeeAddress)
.WithOne()
.HasForeignKey(r=>r.EmployeeId);
}
我在这里看到了类似的问题,但我不知道如何解决我的问题?有人能给我解释一下如何使用HasDiscriminator()以及它的用途吗?当模型中存在继承层次结构时,您必须指定discriminator
modelBuilder.Entity<Employee>()
.HasDiscriminator<string>("EmployeeType");
modelBuilder.Entity()
.HasDiscriminator(“雇员类型”);
要了解有关鉴别器的更多信息,请参见这是您的全部型号吗?在代码
中选择(x=>new{x.Id,x.employAddress})
显示x
类型对象既有Id
又有employAddress
,但没有一个模型同时具有这两个属性。似乎缺少一些信息。@jwatts1980抱歉,我已经编辑了EmployeeAddressNavigation继承员工的问题。谢谢你的帮助。这里还有一个与你的问题似乎更相关的问题。他们在派生类中添加了一个[NotMapped]
属性:事实上,我尝试过它不起作用。您在这里添加了它吗<代码>[NotMapped]公共类EmployeeAddressNavigation:Employee{}谢谢您的回答。你能解释一下employeeType的意义吗?它不在我的DB表中。employeeType是ef core创建的员工表中的一列,用于识别插入表中的模型。例如,当ef core插入Employee时,employeeType的值为“Employee”,当插入EmployeeAddressNavigation时,employeeType的值为“EmployeeAddressNavigation”。我的sql表中没有名为employeeType的列,因此现在我收到错误消息无效列employeetypeEF将鉴别器隐式添加为阴影属性。若要了解更多信息,请参阅