簡體   English   中英

實體框架,保存枚舉集合

[英]Entity Framework, Saving a Collection of Enums

我有一個表格來保存聯系人的電話號碼。 在表格中,我有綁定到每個電話號碼的電話限制。 電話限制存儲為枚舉,但它們可以有多個電話限制。 當我嘗試創建遷移時出現錯誤

無法映射屬性“PhoneNumber.Restrictions”,因為它屬於“ICollection”類型,它不是受支持的原始類型或有效的實體類型。 顯式映射此屬性,或使用“[NotMapped]”屬性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore”忽略它。

我看過一些教程說使用標志,但沒有太多關於它的信息/不清楚如何使用,教程來自 5 多年前。

我的問題是我們在實體框架中存儲電話限制列表的最佳方式是什么?

代碼

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 )與IdName / Description欄,然后創建之間的許多一對多的關系PhoneNumberPhoneRestriction在你DbContext

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM