context.SaveChanges不保存更改而没有任何错误

时间:2014-03-22 05:22:02

标签: c# .net database entity-framework visual-studio

我正在尝试使用此代码在我的控制台应用程序中向数据库表添加一个对象:

using (var context = new Database1Entities())
      {
        var number = new Numbers()
        {
            Num=15
        };
        context.Numbers.AddObject(number);
        context.SaveChanges();
        Console.WriteLine(number.Id);
        Console.ReadLine();
      }

我的模特:

enter image description here

连接字符串:

  <connectionStrings>
<add name="Database1Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\Database1.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

packages.config:

<packages>
   <package id="EntityFramework" version="6.1.0" targetFramework="net40-Client" />
</packages>

但它不会向数据库添加任何内容,并且无论何时运行,它都会返回1作为Id存储的Number

4 个答案:

答案 0 :(得分:3)

正如 Abhay Prince 所说:此代码中没有任何语法或逻辑错误或错误。

问题:我应该说, mdf 文件中的哪个程序会自动更改为自动复制到 bin / debug 文件夹的文件;因此,当我检查在Visual Studio中可以访问的 mdf 文件时,它没有受应用程序影响的任何更改。

答案 1 :(得分:1)

代码中没有任何语法或逻辑错误或错误。它应该可以正常工作,如果它没有提供所需的输出,尝试清理项目或重新启动Visual Studio可能是由于缓存或日志数据。

尝试重新启动Visual Studio,让我们知道它是否正常工作..

答案 2 :(得分:0)

尝试

context.Numbers.AddObject(number);
context.Entry(number).State = EntityState.Added;
context.SaveChanges(); 

答案 3 :(得分:0)

如果我理解这是正确的 What is difference between dbcontext.Add and dbcontext.AddObject 然后,您需要手动设置上下文已更改,然后才能保存到数据库。

如果您改为使用

context.Numbers.Add(number);

上下文应自动设置上下文已更改且savechanges应该有效。