WPFで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).
答え
解決策は3つありました。
Visual Studioで見ていたものとは別のデータベースを変更していました、ソリューション:
var db = new MainDataContext(@ "C:\ Users \ TestUser \ Documents \ Visual Studio 2008 \ Projects \ TestPageManager23434 \ TestPageManager23434 \ Data \ Main.mdf"))
Updateは機能しましたが、SubmitChanges()は機能しませんでした。解決策は、主キーを設定することでした。
それでもすべての問題が表示されていませんでした。問題は、更新されていない「データの表示」ウィンドウがいくつか開いていたことです。