2017-10-10 10 views
0

連絡先の電話番号を保存するテーブルがあります。テーブル内には、各電話番号と結びつけるための電話制限があります。電話の制限は列挙型として保存されますが、複数の電話の制限があります。私がしようとすると、移行を作成するときに私はそれが サポートプリミティブ型、または有効なエンティティではありません型「いるICollection」であるためEntity Framework、列挙型のコレクションを保存する

プロパティ「PhoneNumber.Restrictions」は 、マップすることができませんでしたエラーが出ますタイプ。明示的にこのプロパティを にマップするか、 '[NotMapped]'属性を使用して無視するか、 'OnModelCreating'の 'EntityTypeBuilder.Ignore'を使用して で無視してください。

私はフラグを使用すると言っているチュートリアルを見たことがありますが、使用方法が分かりませんし、チュートリアルは5年以上前です。

私の質問は、Entity Frameworkに電話制限のリストを格納するための最良の方法は何ですか? int

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

Entity Frameworkのは、彼らが技術的に何のためenum値を見ることができます。最も簡単なことは、IdName/Description列の単純な定義テーブル(PhoneRestriction)を作成し、DbContextPhoneNumberPhoneRestrictionの多対多の関係を作成することです。

modelBuilder.Entity<PhoneNumber>() 
      .HasMany(a => a.PhoneRestrictions) 
      .WithMany() 
      .Map(a => a.MapLeftKey("PhoneNumberId") 
         .MapRightKey("PhoneRestrictionId") 
         .ToTable("PhoneNumberPhoneRestriction")); 
関連する問題