我想在代码优先应用中使用枚举作为外键。由于枚举存储为int,我以为我可以在枚举属性上使用属性[ForeignKey],但它会抛出此异常:
The types of all properties in the Dependent Role of a referential constraint
must be the same as the corresponding property types in the Principal Role
这是我想要做的一个例子:
public enum UserType
{
Administrator = 1,
Member = 2
}
public class User
{
public int UserId { get; set; }
public string Login { get; set; }
[ForeignKey("TypeDetails")]
public UserType Type { get; set;}
public virtual MasterType TypeDetails { get; set; }
}
public class MasterType
{
public int MasterTypeId { get; set; }
public string Description { get; set; }
...
}
是否可以通过流畅的api或迁移来执行此类或类似操作?
谢谢
答案 0 :(得分:1)
这是我之前提到的:https://www.nuget.org/packages/ef-enum-to-lookup
它是一个nuget包,提供了一个可以在Seed
(初始化程序和/或迁移)中调用的方法,它将自动构建查找表并在使用枚举的地方添加FK。 Usage info
享受:-)让我知道它是否适合你(或任何其他人的事情!)