实体框架,保存枚举集合
问题描述:
我有一个表来保存联系人的电话号码。在表格中,我有限制每个电话号码的电话限制。电话限制存储为枚举,但可以有多个电话限制。当我尝试创建一个迁移我的错误实体框架,保存枚举集合
属性“PhoneNumber.Restrictions”无法映射, 因为它的类型是“ICollection的”,这是不是一个 支持的基本类型或一个有效的实体类型。要么显式映射 此属性,要么使用'[NotMapped]'属性忽略它,或者使用'OnModelCreating'中的'EntityTypeBuilder.Ignore'通过 忽略它。
我见过一些教程说使用标志,但没有太多的信息/不清楚如何使用和教程是从5年前。
我的问题是我们如何在Entity Framework中存储手机限制列表的最佳方式是什么?
CODE
public class PhoneNumber
{
public int Id { get; set; }
public string PhoneNumber { get; set; }
public ICollection<PhoneRestrictions> PhoneRestrictions { get; set; }
}
public enum PhoneRestrictions
{
None = 0,
DaysOnly = 1,
DoNotCallDays = 2,
Evenings = 3,
NoWeekends = 4
}
答
实体框架只能看到他们在技术上是一个enum
值:一个int
。最容易做的事情,在我看来,是创建一个简单的定义表(PhoneRestriction
)与Id
和Name
/Description
列,然后在DbContext
创建PhoneNumber
和PhoneRestriction
之间的许多一对多的关系。
modelBuilder.Entity<PhoneNumber>()
.HasMany(a => a.PhoneRestrictions)
.WithMany()
.Map(a => a.MapLeftKey("PhoneNumberId")
.MapRightKey("PhoneRestrictionId")
.ToTable("PhoneNumberPhoneRestriction"));
他们/他们希望他们如何存储在表中? – NetMage