代码之家  ›  专栏  ›  技术社区  ›  Tommy Jakobsen

对在ef中附加/分离实体感到困惑

  •  1
  • Tommy Jakobsen  · 技术社区  · 15 年前

    使用ASP.NET MVC和Entity Framework,当我需要它将更改写入数据库时,会遇到一些附加/分离错误。

    首先,我是如何从存储库中获取记录的:

    public PublishedApplication GetPublishedApplication(int id)
    {
        return dal.ExecuteFirstOrDefault(
            context.PublishedApplication.Include("Customers")
            .Where(w => w.Id == id));
    }
    

    请注意,这没有被分离,并且它有mergeoption=appendonly。

    另一个地方,我调用repo中的方法将客户附加到应用程序:

    public void AttachCustomer(int applicationId, int customerId)
    {
        var app = new PublishedApplication{ Id = applicationId};
        var customer = new Customer { Id = customerId};
    
        try
        {
            context.AttachTo("PublishedApplication", app);
            context.AttachTo("Customer ", customer );
    
            app.Customers.Add(customer);
    
            context.SaveChanges();
        }
        catch
        {
            throw;
        }
    }
    

    当然,这会给我一个错误,即对象(应用程序和客户)已经附加到对象上下文。

    所以我需要分离存储库中的对象。这一点也更正确,因为我不需要在Web上抛出“与查询相关的信息”。但我该怎么做呢?如果我在我的 GetPublishedApplication 方法,我的相关数据图丢失了,我负担不起。我需要在我的网站其他地方的图表。无法使用合并选项 NoTracking 要么。

    那么我有什么选择呢?

    事先谢谢!

    1 回复  |  直到 12 年前
        1
  •  0
  •   Puzzled    15 年前

    我认为,要重新连接实体并不容易。
    可能这篇文章会帮助你: Reattaching Entity Graphs with the Entity Framework on codeproject.com