0

嘿,我正在尝试在 DB 优先模式下使用实体框架。我有一个存储在一个名为“DomainEntities”的表中的实体层次结构。

当我使用实体框架生成模式时,我得到了看起来像这样的正确映射。

域实体模式 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

无需找到ParentEntity,您可以像这样直接将ParentEntityID与DomainEntity对象一起使用,要获取模型中的外键列,请在将表导入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 不为空,则删除?标记使其成为不可为空的类型。

于 2012-09-02T04:52:53.747 回答