0

ねえ、私はDBファーストモードで使用してエンティティフレームワークを操作しようとしています。「DomainEntities」という1つのテーブルに格納されているエンティティの階層があります。

エンティティフレームワークを使用してスキーマを生成すると、次のような正しいmappongsが得られました。

DomainEntityスキーマEDMXファイル。

今、私はこのモデルを使用して挿入を実行する方法は何であるか疑問に思います。特定の親で新しいエントリを挿入したい場合は、これをすべて行う必要がありますか?

[HttpPost]
public ActionResult Create(DomainEntity i_EntityToCreate, int ParentEntityID)
{
    using (var db = new CamelotShiftManagementEntities())
    {
        var parentEntity = db.DomainEntities.Find(ParentEntityID);
        i_EntityToCreate.ParentEntity = parentEntity;
        i_EntityToCreate.EntityTypeID = 1;

        db.DomainEntities.Add(i_EntityToCreate);

        db.SaveChanges();
    }
    return RedirectToAction("Index");
}

これは正しいですか、それともエンティティフレームワークを使用してエンティティの階層を表すために従う必要のある別の設計がありますか?

4

1 に答える 1

1

このようにDomainEntityオブジェクトでParentEntityIDを直接使用できるParentEntityを見つける必要はありません。モデルに外部キー列を取得するには、EDMXにテーブルをインポートするときに[モデルに外部キー列を含める]オプションにチェックマークを付けます。

その後、以下のコードを使用します:

[HttpPost]
public ActionResult Create(DomainEntity i_EntityToCreate, int? ParentEntityID)
{
  using (var db = new CamelotShiftManagementEntities())
  {
    i_EntityToCreate.ParentEntityId = ParentEntityID;
    i_EntityToCreate.EntityTypeID = 1;

    db.DomainEntities.Add(i_EntityToCreate);

    db.SaveChanges();
  }

  return RedirectToAction("Index");

}

ParentEntityIDがnullでない場合は、?を削除します。null許容型にならないようにマークを付けます。

于 2012-09-02T04:52:53.747 に答える