2011-06-11 82 views
1

我有一个SQL Server CE数据库文件,我有ADO.NET实体框架对象名为History。我执行以下操作以获得最新的ID:SQL Server CE数据库和ADO.Net实体框架 - 数据没有保存

var historyid = (from id in db.Histories // Get the current highest history Id 
       select (Int32?)(id.Id)).Max(); 

HistoryID = Convert.ToInt32(historyid); 

if (HistoryID == 0) // No current record exists 
{ 
    HistoryID = 1; // Set the starter history Id 
} 

(不是最好的方法,但它只是测试)。

此运作良好,并返回正确的值(如果我手动输入的1的ID,则返回1,同样用2等。)

的问题是用下面的代码:

History history = new History(); 
history.Id = 1; 
history.SoftwareInstalled = "test"; 

db.AddToHistories(history); 
db.SaveChanges(); 

上述工作和运行良好,但更改不会保存到数据库!为什么是这样?

这里是我的数据库变量:dbDeSluggerEntities db = new dbDeSluggerEntities();

感谢。

编辑:这里是一个更新:我注意到当我运行程序并调试它时,它显示已经创建并插入了历史记录,并且还给出了已存在的主键的错误,每次运行时都会发生这种情况该应用程序(一遍又一遍)。但是,当我到服务器资源管理器并右键单击数据库并选择“显示表数据”时,它将显示没有数据。当程序再次运行时,在调试中没有主键错误或历史记录显示!

+0

你能告诉我们你的连接字符串吗?您每次启动应用程序时是否可能重新创建数据库? – 2011-06-11 20:04:50

回答

2

我有完全相同的问题。默认情况下,当您运行应用程序并使用该应用程序时,数据库将被复制到您的bin文件夹中。

我的解决方案是进入数据库的属性,并将其设置为永不复制,并将完整的文件路径放入应用程序配置文件中的连接字符串中的数据库。