新的記錄,我有兩個實體:實體框架創建時調用SaveChanges
public class Order:Entity
{
public virtual User User { get; set; }
...
}
public class User:Entity
{
public virtual ICollection<Order> Orders { get; set; }
...
}
接下來,我創建順序:
var order = _orderService.CreateTransientOrder(orderNumbers, PcpSession.CurrentUser);
PcpSession.Order = order;
這是CreateTransientOrder
。它只能創建Order
,但不能保存到數據庫中:
public Order CreateTransientOrder(string orderNumbers, User currentUser)
{
...fill fields
order.User = currentUser;
return order;
}
現在一切正常。接下來,我保存爲數據庫:
_orderService.CreateOrder(PcpSession.Order);
這是CreateOrder
:
public void CreateOrder(Order order)
{
order.OrderDate = DateTime.Now;
_repository.Save(order);
_repository.SaveChanges();
}
這是我的倉庫的Save
方法:
public void Save<T>(T entity) where T : class, IEntity
{
_context.Set<T>().Add(entity);
}
當SaveChanges
被稱爲數據庫使用新ID創建新用戶並訂購新的User_Id。在CreateOrder
方法中的調試器中,Id等於當前用戶。問題在哪裏?
謝謝。
我在使用泛型上下文。我不知道如何去做。 – user1260827
@ user1260827您是否擁有訂單中可用的用戶外鍵?也就是說,不是使用'order.User = currentUser'來設置與'order.UserId = currentUser.UserId'的關聯。 – 2013-02-01 06:54:42