任何人都可以帮忙吗?我有一个问题linq2sql并尝试通过datacontext附加(更新)一个实体类,它抱怨它不是原始上下文,这是真的(见下面的代码)...我认为这是打开datacontext的最佳做法不需要时关闭它?
我基本上让我的应用程序调用一个服务层,而服务层又调用db上下文所在的存储库....你可以在这里看到我有2个数据上下文,并且每个方法中都定义了一个datacontext ...
基本上发生了什么是我的应用程序“获取”预订...然后应用程序更新实体类“预订”,然后重新发送到“更新”预订..任何人都可以帮助..我完全被卡住
这是basicallly我的代码
public bool UpdateReservation(Reservation reservation)
{
bool success = false;
try
{
ResDataContext db = new ResDataContext ();
db.Reservations.Attach(reservation);
db.SubmitChanges();
success = true;
}
catch (Exception ex)
{
Console.WriteLine("");
}
return success;
}
public Reservation GetReservation(string reservationNumber)
{
ResDataContext db = new ResDataContext ();
return db.Reservations.Where(r => r.ReservationNumber == reservationNumber).SingleOrDefault();
}
答案 0 :(得分:0)
您可以先从DataContext收集正确的Reservation对象,然后更新并提交它。
像这样:
public bool UpdateReservation(Reservation reservation)
{
bool success = false;
try
{
ResDataContext db = new ResDataContext ();
Reservation res = db.Reservations.Where(r => r.ReservationNumber == reservation.ReservationNumber).Single();
db.Reservations.InsertOnSubmit(res);
db.SubmitChanges();
success = true;
}
catch (Exception ex)
{
Console.WriteLine("");
}
return success;
}
答案 1 :(得分:0)
问题在于您没有重新连接到相同的数据上下文。
您需要在调用之间保持ResDataContext的活动状态。
这是Eniity Framework(不是linq to SQL),但问题类似: