我已经基于枚举建立了一个查找表,几乎基于该建议: 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.Type
到OrdeType.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
}