如何为从枚举生成的表创建外键?

时间:2018-09-12 12:05:03

标签: c# .net-core entity-framework-core

我已经基于枚举建立了一个查找表,几乎基于该建议: How to create a table corresponding to enum in EF6 Code First?

现在,我的问题是我无法将MyEntity.OrderType的外键配置为OrderType表。

有关更多背景信息,以下是我的类型:

public enum OrderTypeEnum
{
    Buy = 1, Sell = 2
}

public class OrderType : EntityEnumAdapterBase<OrderTypeEnum>
{
    // this base class implements Id, Name and Description properties as can be seen here:
    // https://stackoverflow.com/questions/34557574/how-to-create-a-table-corresponding-to-enum-in-ef6-code-first/34558339#34558339
}

public partial class MyEntity
{
    [Required]
    public OrderType Type { get; set; } // stored as int using a value conversion
}

现在,当生成MyEntity的数据库模式时,它在MyEntity.TypeOrdeType.Id上没有外键约束。 我该如何实现?

到目前为止,我一直在尝试在MyEntity上添加一个navigaion属性,例如:

public class OrderType : EntityEnumAdapterBase<OrderTypeEnum>
{
    public IList<MyEntity> MyEntities { get; set; }
}

然后在OnModelCreating(ModelBuilder modelBuilder)

中进行配置
modelBuilder.Entity<MyEntity>()
    .HasOne(bc => bc.Type)``
    .WithMany(c => c.MyEntities)
    .HasForeignKey(bc => bc.TypeId);

此操作因消息而失败:'Type'不能用作实体类型'MyEntity'的属性,因为它已配置为导航。

那么,如何解决将FK约束添加到由枚举生成的表中的问题?所提到的方法似乎也有些冗长,因为我必须添加MyEntity.TypeId(类型为int)和OrderType.MyEntities。

理想情况下,MyEntity上我什至不希望拥有OrderType,而是OrderTypeEnum如此:

public partial class MyEntity
{
    [Required]
    public OrderTypeEnum Type { get; set; } // stored as int using a value conversion
}

0 个答案:

没有答案