1 対多および多対多および競合する多重度を持つ EF 6 Fluent API

デュアン・ハワース

この特定の問題に対する答えを見つけることができませんでした。おそらく私の Entity Framework の新しさから

ユーザーと施設という 2 つのエンティティがあります。

ファシリティ テーブルには所有者 (ユーザー) が必要ですが、ファシリティには多くの「FacilityUsers」をファシリティに割り当てることもできます。

public class User
{
    ....
    public virtual ICollection<Facility> Facilities { get; set; }
}

public Facility Facility
{
    public Guid OwnerId { get; set; }
    ...
    public virtual User Owner { get; set; }
    public virtual ICollection<User> FacilityUsers { get; set; }
}

ここに私のModelBuilderがあります

////Many To Many: Users To Facilities
modelBuilder.Entity<User>()
    .HasMany(i => i.Facilities)
    .WithMany(u => u.FacilityUsers)
    .Map(m =>
    {
        m.MapLeftKey("UserId");
        m.MapRightKey("FacilityId");
        m.ToTable("UserFacility");
    });        

//One to Many: Facility To Owner
modelBuilder.Entity<Facility>()
    .HasRequired<User>(s => s.Owner)
    .WithMany(s => s.Facilities)
    .HasForeignKey(k => k.OwnerId);

問題は、Facility から Owner へのマップがある場合、次のエラーが表示されることです。タイプ 'MEH.Web.Models.Entities.Facility' で宣言されたナビゲーション プロパティ 'FacilityUsers' は、競合する multiplicities で構成されています

ただし、ファシリティからオーナーへのマッピングを除外すると、機能します。

//One to Many: Facility To Owner
//modelBuilder.Entity<Facility>()
//    .HasRequired<User>(s => s.Owner)
//    .WithMany(s => s.Facilities)
//    .HasForeignKey(k => k.OwnerId);

問題は、施設テーブルにnull のOwner_UserIdフィールドがあるが、OwnerIdが正しく入力されていることです。「Owner_UserId」の問題を解決するまで、OCD では先に進めません。

ありがとう、D

イワン・ストエフ

1 つのコレクション ナビゲーション プロパティ ( Facilities) を2 つの関係にマップすることはできません

one-to-many関係に別のコレクションを追加するか:

public class User
{
    ....
    public virtual ICollection<Facility> Facilities { get; set; }
    public virtual ICollection<Facility> OwnedFacilities { get; set; }
}

そしてそれをマッピングします:

//One to Many: Facility To Owner
modelBuilder.Entity<Facility>()
    .HasRequired(s => s.Owner)
    .WithMany(s => s.OwnedFacilities) // <- another collection
    .HasForeignKey(k => k.OwnerId);

または、Userモデルを現状のままにしますが、one-to-many関係を単方向(コレクション ナビゲーション プロパティなし)として設定します

//One to Many: Facility To Owner
modelBuilder.Entity<Facility>()
    .HasRequired(s => s.Owner)
    .WithMany() // <- no collection
    .HasForeignKey(k => k.OwnerId);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

efコアにおける同じタイプの1対1および1対多の関係の両方

分類Dev

EFコアの1対多およびさらに1対多の関係のクエリ

分類Dev

1対多および多対多の関係を持つJOOQポジョ

分類Dev

EF6の多対多結合テーブルから1つの列を返します

分類Dev

SQLServerで1対多および多対多の関係を持つ3つのテーブルを結合する

分類Dev

EFコードの最初の1対1および1対多のマッピング

分類Dev

EF 7ベータ6:EF7で1対多の関係を持つエンティティ

分類Dev

エンティティフレームワーク6コードファーストアプローチで2つのテーブル間に1対多および多対1のマッピングを作成する

分類Dev

Fluent Nhibernatewhere句1対多

分類Dev

2つのテーブル間の2つの関係-1対多および1対1(null許容)EFコードファースト

分類Dev

REST API部分一致パターン-オブジェクトには多対多および1対多の関係があります

分類Dev

DynamoDBで1対1、1対多、および多対多の関係をモデル化する方法

分類Dev

EF-1対多??

分類Dev

EF6コードの最初の複数の1対多のマッピングの問題/「多重度」エラー

分類Dev

grailsの同じドメインクラスに対して1対多および多対多を作成する

分類Dev

EF6.xCodeFirstの1対多の関係

分類Dev

Fluent API を使用した EF 6 Code First 関係。1 番目と 3 番目のテーブル間の関係を設定する方法、またはグループ化されたコレクションを取得する方法

分類Dev

MySQL用のEF6Fluent APIを使用してテーブルタイプを指定するにはどうすればよいですか?

分類Dev

DynamoDBの1対多および多対多の構造

分類Dev

hybris-1対多および多対多の関係

分類Dev

EntityFrameworkの1対多および多対多の関係

分類Dev

EF Core Fluent API(主キーからIDを削除する方法)

分類Dev

カスケードは、1対多および多対多の関係を持つEntity FrameworkCoreを使用してすべての子を削除します

分類Dev

1対多および1対多の関係1laravel

分類Dev

MongoDBの1対多および多対1の関係

分類Dev

多対多および一対多 (EF) - コード ファースト

分類Dev

最初にコード内の2つのエンティティ間の多対多および1対多の関係を定義する方法は?

分類Dev

EF6で1対多の関係で使用しようとすると外部キー属性が無効になります

分類Dev

外部キーを含む複合主キーを構成する方法(EF Fluent API)

Related 関連記事

  1. 1

    efコアにおける同じタイプの1対1および1対多の関係の両方

  2. 2

    EFコアの1対多およびさらに1対多の関係のクエリ

  3. 3

    1対多および多対多の関係を持つJOOQポジョ

  4. 4

    EF6の多対多結合テーブルから1つの列を返します

  5. 5

    SQLServerで1対多および多対多の関係を持つ3つのテーブルを結合する

  6. 6

    EFコードの最初の1対1および1対多のマッピング

  7. 7

    EF 7ベータ6:EF7で1対多の関係を持つエンティティ

  8. 8

    エンティティフレームワーク6コードファーストアプローチで2つのテーブル間に1対多および多対1のマッピングを作成する

  9. 9

    Fluent Nhibernatewhere句1対多

  10. 10

    2つのテーブル間の2つの関係-1対多および1対1(null許容)EFコードファースト

  11. 11

    REST API部分一致パターン-オブジェクトには多対多および1対多の関係があります

  12. 12

    DynamoDBで1対1、1対多、および多対多の関係をモデル化する方法

  13. 13

    EF-1対多??

  14. 14

    EF6コードの最初の複数の1対多のマッピングの問題/「多重度」エラー

  15. 15

    grailsの同じドメインクラスに対して1対多および多対多を作成する

  16. 16

    EF6.xCodeFirstの1対多の関係

  17. 17

    Fluent API を使用した EF 6 Code First 関係。1 番目と 3 番目のテーブル間の関係を設定する方法、またはグループ化されたコレクションを取得する方法

  18. 18

    MySQL用のEF6Fluent APIを使用してテーブルタイプを指定するにはどうすればよいですか?

  19. 19

    DynamoDBの1対多および多対多の構造

  20. 20

    hybris-1対多および多対多の関係

  21. 21

    EntityFrameworkの1対多および多対多の関係

  22. 22

    EF Core Fluent API(主キーからIDを削除する方法)

  23. 23

    カスケードは、1対多および多対多の関係を持つEntity FrameworkCoreを使用してすべての子を削除します

  24. 24

    1対多および1対多の関係1laravel

  25. 25

    MongoDBの1対多および多対1の関係

  26. 26

    多対多および一対多 (EF) - コード ファースト

  27. 27

    最初にコード内の2つのエンティティ間の多対多および1対多の関係を定義する方法は?

  28. 28

    EF6で1対多の関係で使用しようとすると外部キー属性が無効になります

  29. 29

    外部キーを含む複合主キーを構成する方法(EF Fluent API)

ホットタグ

アーカイブ