代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

使用实体框架创建实体的实体

  •  3
  • Pablo Fernandez  · 技术社区  · 15 年前

    当一个实体需要在它的一个方法中创建其他实体时,如何处理这种情况?我的问题是,由于每个单独的实体都没有access-objectcontext对象(即使用addToblahs()方法的对象),所以它不能这样做。

    例如,拥有一个站点模型,该模型具有一个updateLinks()方法,该方法应该创建属于该站点的链接对象。updateLinks()方法没有ObjectContext。你做什么?你把一个传给它,像这样:

    public void UpdateLinks(ProjectEntities db) {
        foreach (var link in FetchLinks()) {
            db.AddToLinks(link);
        }
    }
    

    或者你用另一种模式?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Craig Stuntz    15 年前

    你不需要上下文。

    自从 Site.UpdateLinks 正在创造 Link 物体 属于该实例, 实例将与新的 Site . 添加一个 链接 Site.Links 自动地 创造新的 链接 现场 . 同样,当你保存 现场 这个 链接 将与它一起保存。

        2
  •  1
  •   Yakimych    15 年前

    不确定克雷格·斯登茨的回答…链接应附加到上下文,但添加到网站的链接。链接不会自动附加。无论如何,您需要执行db.addtolink(链接)。

    但回答您的问题,对象上下文管理的最佳模式之一可能是UnitOfWork模式。通过使用它,您可以使实体“自我意识到它们当前所属的范围”。 看看这个 article 详细描述和实现示例。 您仍然可以像在示例中那样将ObjectContext作为参数传递给方法(作为更简单的实现)。