1

私の特定のアプリケーションは、Entity Framework を使用した ASP.NET MVC アプリです。

Entity1 への参照 (* から 1) を含むオブジェクト Entity0 があります...

public class Entity_0
{
    public int ID { get; set; }
    public int Entity_1_ID { get; set; }
    public Entity_1 Entity_1 { get; set; }
}

Entity_0 にもいくつかのロジックがありますが、このロジックでは Entity_1 が null でないことが必要です...

public Entity_2 GetEntity_2()
{
    return new Entity_2() { Number = Entity_1.Value * 10 };
}

コントローラーでモデル バインディングを介して Entity_0 の新しいインスタンスが作成されると、Entity_1_ID プロパティが設定されますが、Entity_1 ナビゲーション プロパティは、データベースに永続化されるまで null のままです。

GetEntity_2() を呼び出して、Entity_0 と Entity_2 を 1 つの作業単位としてデータベースに保存する必要があります。これは、関数を呼び出す前に、リポジトリから Entity_1 を手動で取得して Entity_0 に割り当てる必要があることを意味します。

私が検討したもう 1 つのオプションは、Entity_1 を GetEntity_2 メソッドのパラメーターにすることですが、それ以外の場合、そのメソッドが Entity_1 と呼ばれる場合は null にならないため、パラメーターを要求するのは冗長です。

したがって、明らかにすべてが現在機能していますが、私の質問は、a) null 参照例外をスローする可能性のあるメソッドを持っているか、b) 一部のみを使用する必要があるメソッドパラメーターを指定することにより、OOP 設計規則に違反しているかどうかです。時間。

ナビゲーション プロパティを手動で割り当てなければならないのは、本当に困ります。どうすればこれを改善できるかについて、いくつかの提案があることを願っています。

ありがとう!

4

1 に答える 1

0

ああ、これは私が想像していたよりもはるかに簡単であることが判明しました!

オブジェクトをコンテキストに追加した後、ナビゲーション プロパティ Entity_1 が設定されます。SaveChanges() を呼び出してデータベースに永続化するまで、null であるという印象を受けました。

これにより、次のようにコードを簡単に呼び出すことができます...

var entity_1 = Entity_1CreateViewModel.Entity_1;
entitiesRepository.Add(entity_1);
entitiesRepository.Add(entity_1.GetEntity_2());
entitiesRepository.Save();
于 2010-10-04T03:19:52.333 に答える