我在WPF应用程序中创建了一个.MDF数据库。
然后我生成了LINQ-to-SQL类,并使用LINQ获取所有客户。
然后我会浏览它们并更改每个姓氏。
但是,当我调用SubmitChanges时,数据库保持不变。
我认为这是SubmitChanges()的目的,是为了向数据库提交更改吗?
我缺少什么,如何“将更改”提交回我的数据库?
public Window1()
{
InitializeComponent();
Main2DataContext _db = new Main2DataContext();
var customers = from c in _db.Customers
select c;
foreach (var customer in customers)
{
customer.LastName = "CHANGED lastname"; //ListBox shows changes
}
_db.SubmitChanges(); //does NOT save to database (???)
}
答案 0 :(得分:15)
我想我知道问题所在。您使用的是本地.mdf文件吗?如果是这种情况,请检查bin / debug文件夹。我打赌你有一个数据库在里面有变化。我认为你的项目中有一个.mdf文件,每次构建时都会将其复制到bin / debug文件夹中。因此,更改将保存到副本中,并且您没有看到它直接反映在项目中的副本中。
答案 1 :(得分:2)
确保您的_db在检索和更改之间的任何时候都没有重置到新的上下文,如果这样就好了。您还可以通过TheListBox.ItemsSource = _db.Customers;
简化数据源的分配。我在当前代码中有很多地方,我正在完成您所描述的内容,并且更改正在传播。另外一个建议,设置登录上下文(将_db.Log
设置为某个编写器,我通常使用Console.Out
,这样我可以在调试时观察输出窗口中的更改),这样您就可以看到实际的更改当你致电SubmitChanges()
时会发生。