2012-12-30 49 views
3

我正在使用教程http://msdn.microsoft.com/en-us/data/jj591506发现自己的实体框架。我正在处理下面的代码。实体框架不保存/停止重建数据库

using (var db = new DatabaseEntities()) 
{ 
     var section = new Section 
     { 
      SectionID = 1, 
      SectionName = "Bob" 
     }; 
     db.Sections.Add(section); 
     db.SaveChanges(); 
} 

由于某种原因,这段代码没有写入我的数据库。没有错误被抛出。你有什么想法我可以看看或者可能是什么原因?这是与上面链接的MSDN页面上示例给出的几乎完全相同的副本。

这个问题看起来与此问题中发生的事情非常相似:Entity Framework not actually saving changes不幸的是,回答此问题的人没有解释他们如何解决问题。他们解释说,他们检查了数据库中的SQL,经过一番调查,结果证明他们在项目中有一个数据库的副本,在重建时它覆盖了输出中的数据库。我的问题是我不知道如何阻止这种情况的发生。你能帮我吗?

我也看了看:从谷歌

+0

您是否考虑阅读文档或其他来源?一遍又一遍问同样的问题不会有帮助,“我正在使用http://msdn.microsoft.com/en-us/data/jj591506上的教程教我自己的实体框架。”意味着你应该使用另外的源。关于小马小马在您理解小马的问题时无法正常工作,所以可以这么说。 – TomTom

+0

[Entity Framework Not Operating as Expected]的可能重复(http://stackoverflow.com/questions/14089983/entity-framework-not-operating-as-expected) – TomTom

+0

我离开我最后一个问题的原因是有人解决了它。往往是这样,它通过一个新的问题对我来说。这些是完全不同的问题。我希望stackoverflow将成为我的第二个小马。任何建设性的想法? – Brett

回答

3

因此,我最终采纳上面的建议创建一个新的项目,不幸的是没有工作。 10个小时的谷歌搜索后,我找到了解决方案。我怀疑数据库正在重建。

要防止重建数据库,请在解决方案资源管理器中右键单击它并转到属性。在属性下找到属性Copy to output directory并将值更改为Do not copy

这实际上打破了我的代码,因为数据库不在输出目录中。为了让程序再次工作,我必须手动将数据库的副本放到我的调试目录中。对于我的项目。在Windows 8与Visual Studio 2012这个位于:

%UserProfile%\Documents\Visual Studio 2012\Projects\PROJECTNAME\PROJECTNAME\bin\Debug 

希望这可以节省其他人在互联网上搜索几个小时。

+0

当你发布项目时,你会把数据库放在哪里? – puser

+0

+1,因为我希望这个帖子有更高的搜索排名,因为这正是我的问题,我终于得出了相同的结论并解决它(约2小时后)约30秒后偶然发现: – Matt