繁体   English   中英

使用Linq将对象更新为SQL

[英]Updating an Object Using Linq to SQL

我正在尝试为asp.net应用程序编写一些业务层逻辑,以插入或更新对象。 我正在从业务层中获取一个对象,然后将其传递回去以保存到数据库。 数据上下文包含在业务层中,我认为这是导致异常的原因。

例外是“已尝试附加或添加一个不是新的实体,可能是从另一个DataContext加载的实体。不支持此操作。”

我确定我缺少一些小设置,但我不确定是什么。

这是执行插入和更新的代码。

public static void Save(Order order)
{
        using (TicketInformationDataContext db = new TicketInformationDataContext())
        {                
            if (order.OrderID <= 0)
                db.Orders.InsertOnSubmit(order);
            else
            {
                db.ObjectTrackingEnabled = true;
                ITable table = db.GetTable(typeof(Order));
                table.Attach(order, true);
                db.Orders.Attach(order, true);
            }
            db.SubmitChanges();
        }
}

我相信您的问题是您正在创建单独的上下文来加载订单,然后再保存订单。

您应该设计存储库以使其在构建过程中可以通过的上下文中工作(或最好通过IoC注入)。 这样,两种操作都可以在相同的上下文中进行。

请记住,实体是绑定到其上下文的,并且尝试将它们混合在一起会引起各种问题,尤其是对于惰性初始化或关联的实体。

请参阅对此相似问题的接受答复, 该问题讨论了存储库设计和工作单元设计模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM