2011-03-17 100 views
5

运行此代码后,我发现我的数据库中没有entrys。 我从代码没有收到任何错误。C#Entitity框架SaveChanges()不起作用

有谁知道我螨虫做错了什么?

PeopleEntities1 db = new PeopleEntities1(); 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.AddToPeople(roger); 
      db.SaveChanges(true); 
+2

您是否正在使用SQL Server,如果是,你可以运行SQL Profiler并查看针对数据库执行的操作吗? – 2011-03-17 02:53:27

+1

数据库的位置是什么?确保你不是每次运行代码时将它复制到输出目录。我可能在每次运行我的应用程序时复制到输出目录的SQLite数据库有类似的问题,这使我失去了我在上一次运行期间所做的更改。 – 2011-03-17 02:56:52

+0

这正是发生的事情;我在项目目录中创建数据库,但是当它在bin目录中再次创建数据库文件时。 – Roge 2011-03-17 03:19:20

回答

4

数据库的位置是什么?确保你不是每次运行代码时将它复制到输出目录。我可能会遇到类似的问题,即每次运行我的应用程序时都会复制到输出目录,这使我失去了在上次运行时所做的更改

+1

我在2010 Express创建了一个标准的C#控制台应用程序,使用向导来创建一个简单的sql express数据库文件,该文件放置在项目目录中,使用向导生成实体数据模型基于新创建的db,写了几行来测试出实体。 问题是我每次运行应用程序时都会重新创建数据库文件,无论在哪个目录中,exe每次都会覆盖自身,并完全忽略位于项目目录中的原始数据库文件dir – Roge 2011-03-17 04:22:46

+1

那么对此有何解决方案? – 2014-03-20 05:00:23

1

而不是db.AddToPeople(),尝试db.People.Add()。

另外,在db变量周围使用using语句以确保正确地处理上下文和连接。

这是针对EF4和.NET 4.0的。

假设您有一个名为“人员设置”的列表。

希望这会有所帮助! :)

下面是代码:

所有的
using (PeopleEntities1 db = new PeopleEntities1()) 
{ 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.People.Add(roger); 
      db.SaveChanges(true); 
} 
+0

我似乎没有一个db.People.Add()方法;顺便说一下,我用向导从DB创建我的实体类。 – Roge 2011-03-17 02:15:42

+0

好吧,根据复数形式,你可能有db.Persons – Russell 2011-03-17 02:21:31

+0

我最接近的是db.People.AddObject;这给出了与db.AddToPeople()相同的结果,运行时没有错误但没有DB中的条目。 – Roge 2011-03-17 02:34:03

1

首先,SaveChanges(true)是一种过时的方法,所以我不建议使用它。你尝试过使用SaveChanges()吗? Like in db.SaveChanges()

SaveChanges(boolean)最接近的方法是SaveChanges(SaveOptions),它会持续更新数据源并指定SaveOptions

+0

是的,我尝试使用SaveChanges()而不带参数。 – Roge 2011-03-17 02:31:49

+0

已弃用,但仍支持并应该可以工作 – BrokenGlass 2011-03-17 02:36:22

+0

您的原始评论可能是正确的 - 他需要运行分析器,并且确切地看*这是针对哪个数据库运行的。我敢打赌,他有他的连接字符串混合起来 – 2011-03-17 03:17:42