Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF核心错误无效列“;鉴别器;继承_C#_Entity Framework - Fatal编程技术网

C# EF核心错误无效列“;鉴别器;继承

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

我是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 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将鉴别器隐式添加为阴影属性。若要了解更多信息,请参阅