我在WPF中用LINQ-TO-SQL設置了一個非常簡單的例子。什麼可能導致db.submitChanges()不能在linq-to-sql中工作?
我可以得到一個對象(pageItem)弄成這樣,我可以改變財產,當我打電話的SubmitChanges()它給了我沒有錯誤但不保存的更改。
MainDataContext db = new MainDataContext();
var pageItem = (from p in db.PageItems
where p.Id == 1
select p).SingleOrDefault();
pageItem.Title = "changed";
db.SubmitChanges();
什麼可能導致SubmitChanges不提交更改?
更多信息:
這也不起作用,甚至db.ExecuteCommand不起作用,奇怪當調試F11沒有踏入的SubmitChanges()或ExecuteCommand(),爲什麼我不能介入那些?
using (var db = new MainDataContext())
{
var pageItem = (from p in db.PageItems
where p.Id == 1
select p).SingleOrDefault();
pageItem.Title = "changed";
db.SubmitChanges();
db.ExecuteCommand("INSERT INTO PageItems (Title) VALUES ('this is the title')");
if (pageItem != null)
MainContent.Children.Add(new QuickForm(pageItem));
}
更多信息:
的db.Log = Console.Out給了我這樣的:
SELECT [t0].[Id], [t0].[IdCode], [t0].[Title], [t0].[Description], [t0].[DisplayOrder]
FROM [dbo].[PageItems] AS [t0]
WHERE [t0].[Id] = @p0
'TestPageManager23434.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\PresentationFramework.resources\3.0.0.0_de_31bf3856ad364e35\PresentationFramework.resources.dll'
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1
INSERT INTO PageItems (Title) VALUES ('this is the title')
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1
The thread 0x1190 has exited with code 0 (0x0).
ANSWER
的解決方案是三個方面:
我改變了不同的da tabase比我在視覺工作室,解決方案:
var db = new MainDataContext(@「C:\ Users \ TestUser \ Documents \ Visual Studio 2008 \ Projects \ TestPageManager23434 \ TestPageManager23434 \ Data \ Main.mdf」) )
使更新工作但不SubmitChanges(),解決方案是設置主鍵。
它仍然沒有顯示,問題是我有一些「數據顯示」打開窗戶是否使用SQL表達式MDF文件,該文件並沒有被更新
您確定pageItem.Title沒有「更改」以開始? – hwiechers 2009-10-16 16:28:09