我有一张表来保存联系人的电话号码。在表格中,我有电话限制与每个电话号码绑定。电话限制存储为枚举,但它们可能有多个电话限制。当我尝试创建迁移时,我收到错误
属性' PhoneNumber.Restrictions'无法映射, 因为它的类型是' ICollection'这不是一个 支持的基本类型或有效的实体类型。要么明确地映射 此属性,或使用' [NotMapped]'忽略它属性或 使用' EntityTypeBuilder.Ignore'在' OnModelCreating'。
我已经看过一些使用标志的教程,但是没有太多的信息/不清楚如何使用和教程来自5年多以前。
我的问题是,我们在实体框架中存储电话限制列表的最佳方式是什么?
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
}
答案 0 :(得分:0)
实体框架只能看到技术上属于enum
的值:int
。在我看来,最简单的方法是创建一个包含PhoneRestriction
和Id
/ Name
列的简单定义表(Description
),然后创建一个 - PhoneNumber
中PhoneRestriction
与DbContext
之间的多对多关系。
modelBuilder.Entity<PhoneNumber>()
.HasMany(a => a.PhoneRestrictions)
.WithMany()
.Map(a => a.MapLeftKey("PhoneNumberId")
.MapRightKey("PhoneRestrictionId")
.ToTable("PhoneNumberPhoneRestriction"));