我正在为一家租车公司建造一个预订引擎。
我有一个booking L2S对象,它有一个car和location对象(以及随后的fk carid/locationid字段)。
在预订过程的第一步中,我新建了一个booking()类。这将在会话中传递给后续页面。
当用户继续执行该过程时,会设置carid和locationid属性,但是由于预订对象尚未持久化回数据库,因此我无法引用booking.car.carmodel。
所以我要做的是明确地设置它:
Booking.Car = DB.Car.Where(x => x.id == Booking.CarID).Single();
等。
当需要保存预订时,它会抛出一个:
已尝试附加或
可能添加一个非新实体
从另一个加载
数据结构。不支持此操作。
因此,它似乎认为预订实体不是新的。如果我尝试将已明确设置的值(booking.car=null)设为空,则会引发另一个错误:
试图消除汽车和预订之间的关系。但是,关系的一个外键(booking.carid)不能设置为空。
现在我被难住了…
最终解决方案
我最终做的(尝试了很多不同的事情之后)是在保存预订之前,我从当前上下文重新加载汽车和位置对象。不完全有效,但我。