2017-10-10 156 views
0

我有一個表來保存聯繫人的電話號碼。在表格中,我有限制每個電話號碼的電話限制。電話限制存儲爲枚舉,但可以有多個電話限制。當我嘗試創建一個遷移我的錯誤實體框架,保存枚舉集合

屬性「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 
} 
+0

他們/他們希望他們如何存儲在表中? – NetMage

回答

0

實體框架只能看到他們在技術上是一個enum值:一個int。最容易做的事情,在我看來,是創建一個簡單的定義表(PhoneRestriction)與IdName/Description列,然後在DbContext創建PhoneNumberPhoneRestriction之間的許多一對多的關係。

modelBuilder.Entity<PhoneNumber>() 
      .HasMany(a => a.PhoneRestrictions) 
      .WithMany() 
      .Map(a => a.MapLeftKey("PhoneNumberId") 
         .MapRightKey("PhoneRestrictionId") 
         .ToTable("PhoneNumberPhoneRestriction"));