gpt4 book ai didi

asp.net-mvc - Linq to SQL 更新无法使用存储库模式进行

转载 作者:行者123 更新时间:2023-12-04 17:42:32 25 4
gpt4 key购买 nike

我正在为应用程序使用 asp.net mvc。我从 Rob Conery 关于 MVC 店面的系列中获得了一些指导。我使用的数据访问模式与他在店面中使用的模式非常相似。

但是,我在模式中添加了一个小差异。我在模型中创建的每个类都有一个名为 IsNew 的属性。这样做的目的是让我指定是否应该在数据库中插入或更新。

这是一些代码:

在我的 Controller 中:

OrderService orderService = new OrderService();
Order dbOrder = orderService.GetOrder(ID);

if (ModelState.IsValid)
{
dbOrder.SomeField1 = "Whatever1";
dbOrder.SomeField2 = "Whatever2";
dbOrder.DateModified = DateTime.Now;
dbOrder.IsNew = false;

orderService.SaveOrder(dbOrder);
}

然后在 SQLOrderRepository 中:
public void SaveOrder(Order order)
{
ORDER dbOrder = new ORDER();

dbOrder.O_ID = order.ID;
dbOrder.O_SomeField1 = order.SomeField1;
dbOrder.O_SomeField2 = order.SomeField2;
dbOrder.O_DateCreated = order.DateCreated;
dbOrder.O_DateModified = order.DateModified;

if (order.IsNew)
db.ORDERs.InsertOnSubmit(dbOrder);

db.SubmitChanges();
}

如果我更改 Controller 代码,使 dbOrder.IsNew = true;然后代码工作,并且正确插入值。

但是,如果我设置 dbOrder.IsNew = false;然后什么也没有发生......没有错误 - 它只是不更新​​订单。

我在这里使用 DebuggerWriter: http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11跟踪正在生成的 SQL,正如预期的那样,当 IsNew 值为 true 时,会正确生成并执行 Insert SQL。但是,当 IsNew 设置为 false 时,似乎没有生成任何 SQL,因此不会执行任何操作。

我已经确认这里的问题( LINQ not updating on .SubmitChanges() )不是问题所在。

任何帮助表示赞赏。

最佳答案

在您的 SaveOrder 方法中,您总是在创建一个新的 ORDER 对象。您需要更改此设置,以便如果 order.IsNew 为 false,它会从数据库中检索现有的并进行更新。

public void SaveOrder(Order order)
{
ORDER dbOrder;
if (order.IsNew)
{
dbOrder = new ORDER();
dbOrder.O_ID = order.ID;
}
else
{
dbOrder = (from o in db.ORDERS where o.O_ID == order.ID select o).Single();
}

dbOrder.O_SomeField1 = order.SomeField1;
dbOrder.O_SomeField2 = order.SomeField2;
dbOrder.O_DateCreated = order.DateCreated;
dbOrder.O_DateModified = order.DateModified;

if (order.IsNew)
db.ORDERs.InsertOnSubmit(dbOrder);

db.SubmitChanges();
}

关于asp.net-mvc - Linq to SQL 更新无法使用存储库模式进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/304570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com