尝试将订单插入数据库时出现奇怪的重复键异常。订单具有将用户与订单联系起来的用户关系。
我不确定为什么会发生重复异常,因为我从数据库中获取用户,然后在插入之前将其分配给订单。
我的用户上下文只是用户的 IRepository。
信息
使用 EF 版本 6.2.0
Ctor
public OrderManagerController(IRepository<Order> orderContext,
IRepository<User> userContext)
{
_orderContext = orderContext;
userContext = userContext;
}
注入绑定
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
//Bind concrete classes to contracts
kernel.Bind<IRepository<Order>>().To<SQLRepository<Order>>();
kernel.Bind<IRepository<User>>().To<SQLRepository<User>>();
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
行动
[HttpPost]
public ActionResult Create(OrderManagerViewModel order)
{
if (!ModelState.IsValid)
return View("Create", order);
else
{
User user = _userContext.Find(order.AssignedUserId); // Grab user from DB
//Create the order from the passed in view model and DB user
Order orderToInsert = new Order
{
AssignedUser = user,
Category = order.Category,
Comments = order.Comments,
CustomerName = order.CustomerName,
EstimatedHours = order.EstimatedHours,
SalesOrderNumber = order.SalesOrderNumber,
LineType = order.LineType,
OrderTotal = order.OrderTotal,
ScheduledCompletionDate = order.ScheduledCompletionDate,
OutDate = order.OutDate
};
_orderContext.Insert(orderToInsert); // Insert
_orderContext.Commit();//Save -----Crashes with Duplicate Exception on AssignedUser.Id
return RedirectToAction("Index");
}
}
OrderManagerViewModel
小怪兽爱吃肉
相关分类