【发布时间】:2012-06-01 03:12:31
【问题描述】:
我正在尝试为 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();
}
}
【问题讨论】:
-
看起来您将 Order 对象两次附加到我认为的同一上下文中......
-
尝试注释掉:ITable table = db.GetTable(typeof(Order)); table.Attach(order, true);
-
我已经尝试注释掉
ITable table = db.GetTable(typeof(Order));和table.Attach(order, true);并且只有db.Orders.Attach(order, true);我也尝试过相反的方法,将db.Orders.Attach(order, true);注释掉并且我得到了同样的异常。 -
您正在创建并传递给此方法的 Order 对象是使用您在其他地方实例化的不同上下文创建的吗?
标签: c# asp.net sql linq linq-to-sql