2010-05-18 96 views
1

我使用其向导在visual studio 2010中创建了一个数据库和dbml。一切工作正常,直到我检查表数据(也在Visual Studio服务器资源管理器),我的更新没有在那里。LinqToSQL不更新数据库

using (var context = new CenasDataContext()) 
{ 
    context.Log = Console.Out; 
    context.Cenas.InsertOnSubmit(new Cena() { id = 1}); 
    context.SubmitChanges(); 
} 

这是我用来更新我的数据库的代码。在这一点上我的数据库有一个表与一个字段(PK)命名ID。

** INSERT INTO [DBO] .Cenas VALUES(@ P0) - @ P0:输入int(尺寸= -1; PREC = 0;量表= 0)[1] - 上下文: sqlProvider的(SQL2008)型号:AttributedMetaModel体形: 4.0.30319.1 **

这是从执行(印刷上下文日志到控制台)LOG。

我遇到的问题是这些更新不是数据库中的持久性。我的意思是,当我查询我的数据库(Visual Studio服务器资源管理器 - >新查询)我看到表是空的,每次。

我正在使用SQL Server数据库文件(.mdf)。

EDIT(1):立即窗口结果

context.GetChangeSet() 
{Inserts: 1, Deletes: 0, Updates: 0} 
    Deletes: Count = 0 
    Inserts: Count = 1 
    Updates: Count = 0 
context.GetChangeSet().Inserts 
Count = 1 
    [0]: {DBTest.Cena} 

回答

0

如果您构造DataContext不带参数,它将从您的App.Config或Web.Config文件中检索其连接字符串。打开应用的一个,并确认它指向同一个数据库。

+0

是的,它指向正确的地方;) – codegarten 2010-05-18 17:08:15

+0

我想你是对的。 问题是使用DataContext创建LinqToSql文件(dbml)的向导读取Settings.settings文件而不是App.config。所以我确定它正在访问正确的数据库,但事实并非如此。我甚至不知道它在做什么<< 注意自我:不要相信奇才。 – codegarten 2010-05-18 17:44:32

0

穿戴context.SubmitChanges断点();在你的眼前VS窗口,这样做:

context.GetChangeSet(); 

有一个刀片财产,它应该有一个记录。这将有助于判断它是否在排队插入。

HTH。

+0

结果在OP中。 – codegarten 2010-05-18 17:13:42

+0

谢谢,我在编辑之前发布。 – 2010-05-18 19:19:06