Entity framework core 实体框架核心2.0 HasColumnType引发运行时异常

Entity framework core 实体框架核心2.0 HasColumnType引发运行时异常,entity-framework-core,Entity Framework Core,我有一个自定义枚举类型EmploymentState(我认为EF6术语中的复杂类型) 在OnModelCreating中,以下代码引发运行时异常 modelBuilder.Entity<Employee>().Property(e => e.EmployementState.Value).HasColumnType("int"); 无法找出正确的语法,或者我还缺少其他东西 感谢您的帮助。假设您的EmploymentState对象具有以下模型,该模型将保存员工的不同状态: pu

我有一个自定义枚举类型EmploymentState(我认为EF6术语中的复杂类型)

在OnModelCreating中,以下代码引发运行时异常

modelBuilder.Entity<Employee>().Property(e => e.EmployementState.Value).HasColumnType("int");
无法找出正确的语法,或者我还缺少其他东西


感谢您的帮助。

假设您的
EmploymentState
对象具有以下模型,该模型将保存员工的不同状态:

public class EmployementState
{
    public int Id { get; set; }
    public string Name { get; set; }
}
然后可以添加一个引用,如:

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    // All your user properties here

    public int EmployementStateId { get; set; }
    public virtual EmployementState EmployementState { get; set; }
}
我建议这样做,因为这是处理描述对象的状态时的最佳方法

当然,作为两个独立的模型,它们是可配置的,因此下面这样的配置很容易实现

modelBuilder.Entity<Employee>().Property(e => e.EmployementStateId)
    .HasColumnName("employement_state_ID");
modelBuilder.Entity().Property(e=>e.EmploymentStateID)
.HasColumnName(“就业州ID”);

错误会自行解释。
.Property(e=>e.employmentstate.Value)
我猜是一个虚拟属性。您需要指定
Entity().Property(e=>e.Value)
的配置。@cristian szpisjak感谢您的回复。这确实解决了运行时异常。但由于EmploymentState是一个类,因此它只会在数据库中创建另一个EmploymentState表。但是,我只想将EmployeementState值保存在Employee表中作为一列。我怎么做?谢谢。然而,我希望避免为同一目的拥有两处房产。我将对此进行更深入的研究。再次感谢。我认为在这种情况下不是回避的问题,因为这是强类型方式或使用简单字符串。然而,这种方法将消除未来可能出现的大多数问题。
modelBuilder.Entity<Employee>().Property(e => e.EmployementStateId)
    .HasColumnName("employement_state_ID");