实体框架核心2.0 HasColumnType抛出运行时异常

时间:2017-12-06 08:02:20

标签: entity-framework-core

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

在OnModelCreating中,以下代码抛出运行时异常。

modelBuilder.Entity<Employee>().Property(e => e.EmployementState.Value).HasColumnType("int");

以下例外情况显示:

  Message=The expression 'e => e.EmployementState.Value' is not a valid property expression. The expression should represent a property access: 't => t.MyProperty'.

无法弄清楚如何正确使用语法,还是我还缺少其他东西?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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");