我正在为汽车租赁场所建造一个预订引擎。
我有一个Booking l2s对象,它有一个Car和Location对象(以及后续的FK CarID / LocationID字段)。
在预订过程的第一步,我新建了一个Booking()课程。这会在会话中传递到后续页面。
当用户继续执行该过程时,会设置CarID和LocationID属性,但由于Booking对象尚未持久保存回数据库,因此我无法引用Booking.Car.CarModel。
所以我正在做的是明确地设置它:
Booking.Car = DB.Car.Where(x => x.id == Booking.CarID).Single();
等
当需要保存预订时,它会抛出:
已尝试附加或 或许,添加一个非新的实体 从另一个装载 DataContext的。这不受支持。
所以它似乎认为预订实体不是新的。如果我尝试将我明确设置的值(Booking.Car = null)置空,则会抛出另一个错误:
试图删除Car和Booking之间的关系。但是,其中一个关系的外键(Booking.CarID)不能设置为null。
现在我很难过......
我最后做的事情(尝试了很多不同的事情之后)就在保存预订之前,我从当前的上下文重新加载了Car和Location对象。不完全有效,但是meh。
答案 0 :(得分:0)
我很确定您的数据文本处理存在问题。你是否每个请求创建一个?如果答案是肯定的,那么问题是您的对象与不同的上下文相关联。您必须从用于从数据库中获取它们的上下文中分离它们,并将它们重新连接到您要用于存储它们的上下文。