2016-09-22 22 views
1

私はdbcontextを実装する基本クラスから派生したコンテキストを持っています。OnModelCreatingでの継承されたマッピングのオーバーライド

protected override void OnModelCreating(ModelBuilder builder) 
{ 
    base.OnModelCreating(builder); 
    builder.Entity...(add my customization) 
} 

それが派生文脈で "IsUnique" をドロップすることが可能です:

protected override void OnModelCreating(ModelBuilder builder) 
{ 
    builder.Entity<TUser>(b => 
    { 
     b.HasIndex(u => u.NormalizedUserName).HasName("UserNameIndex").IsUnique(); 
     ... 
    } 
} 

クラスOnModelBuilderを派生:基本クラスOnModelCreatingは似ているのですか?

+0

それは(HasAlternateKey' 'を使用して作成された)ユニーク制約が、ユニークなインデックスではありません。とにかく、「ドロップ」とは何ですか?完全に削除します。つまり、そのようなインデックスを作成しないでください。 –

+0

NormalizedUserNamesを複製したいと思っています。私はID(int)に基づいてユーザーと作業していて、重複するUserNamesには基づいていません。 –

答えて

1

一般に、HasKey,HasAlternateKeyHasIndexのようなものを作成するマッピングは取り消すことができません。しかし、可能であれば、その属性を変更することができます。この特定のケースで

、あなたはIsUniqueメソッドのオプションパラメータにfalseを指定することで、インデックスが非一意にすることができます。

protected override void OnModelCreating(ModelBuilder builder) 
{ 
    base.OnModelCreating(builder); 
    builder.Entity<TUser>(b => 
    { 
     b.HasIndex(u => u.NormalizedUserName).IsUnique(false); 
     ... 
    } 
} 
関連する問題