2016-03-31 8 views
0

は、私は私の図から、私のテーブルを生成した:エンティティフレームワーク1対1リレーション?

Database schema しかし、私は、なぜ、EFが起源モデルでこれを生成します知らん:

public int OriginID { get; set; } 
public virtual Origin Origin { get; set; } 
:コンテナモデルで

public virtual ICollection<Container> Containers { get; set; } 

および文脈で:

modelBuilder.Entity<Origin>() 
      .HasMany(e => e.Containers) 
      .WithRequired(e => e.Origin) 
      .WillCascadeOnDelete(false); 

しかし、コンテナオブジェクトは1つのOriginオブジェクトのみを持つことができます。

オリジンオブジェクト内にオブジェクトのインスタンスを1つだけ持つようにコレクションを削除するにはどうすればよいですか?

実際に私のRestierサービスは、1つのコンテナのみのコレクションを使用して、元のオブジェクトを取得しているためです。

だから、コレクションはまったく役に立たない。

皆さん、ありがとうございますか?彼らはそれを知らない - 起源はうまくコンテナの多くに関連している可能性があるため

は非常に多くの

+0

両方のプライマリキーの間に関係はありませんか? – schlonzo

答えて

0

、ありがとうございました。あなたが持っているものは、1つ(原点)から多くのもの(コンテナ)です。 ID 1の原点と原点ID 1のコンテナがあるとします。同一のoriginIDを持つコンテナBを追加できないのはなぜですか? 1対1の関係を主張する場合は、両方のモデルにキーを追加してみてください。原点は、それが1つのコンテナのみに関連していることを知る必要があります。

TD; DR:ContainerIDをOriginテーブルに追加します。

+0

まあ、元のテーブルには、null可能な "コンテナ"またはnull可能な "フロー"があります。しかし、ただ一つ。だから私は簡単に私のデータを取得するために1-1が必要です。実際に私が得るものは次のとおりです:{ "ID":1、 "フロー":[ ] "コンテナ":[ { "ID":1、 "名前": "M3"、 "幅":0.0 、 "Length":0.0、 "Height":0.0、 "Volume":0.0、 "OriginID":1、 "DestinationID":13、 "DisplayName": "Mercuras" } ] } –

0

私は、1対1の関係を追加する最良の方法は、外部キーでもある主キーを持つと思います。

(オリジンIDはコンテナIDを参照する必要があります)

関連する問題