【问题标题】:context.SaveChanges does not save changes without any errorcontext.SaveChanges 不会在没有任何错误的情况下保存更改
【发布时间】:2014-03-22 05:22:02
【问题描述】:

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

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

我的模特:

连接字符串:

  <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 作为存储的 IdNumber

【问题讨论】:

  • 连接字符串是什么样的?
  • @GertArnold 我更新了问题

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 那对不起..我看不出有什么问题。这段代码在我的系统中运行良好。如果可行,请尝试使用 context.AddToNumbers(number) ..
    • 你找到答案了吗? context.AddToNumbers(number) 是否有效?
    • 我试过AddToNumbers,但没有任何改变!我想将我的 EF 升级到 6.1!
    • 你能把你完整的 .cs 代码和表格结构发给我吗?我的电子邮件 ID 是 abhayprince@outlook.com
    【解决方案3】:

    试试

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

    【讨论】:

    • Add 方法不存在!
    • 您使用的是哪个版本的 EF..?试过这个?context.Numbers.AddObject(number);context.Entry(number).State = EntityState.Added; context.SaveChanges();
    • 您的 ID 是否设置为身份列..?尝试 context.AddToNumbers(number);按照 Abhay Prince 的建议。
    • 它是标识和自动增量。我也试过AddToNumbers,但没有成功!我会将 EF 升级到最新版本。
    • 试试,如果不行,你可以移动到最新版本。我的建议是总是使用最新版本。:)
    【解决方案4】:

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

    如果你改为使用

    context.Numbers.Add(number);
    

    上下文应该自动设置上下文已经改变并且savechanges应该起作用。

    【讨论】:

    • AddObject 方法与 Add 相同。 EF5中引入了add方法
    猜你喜欢
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2022-01-22
    • 2021-01-08
    • 1970-01-01
    相关资源
    最近更新 更多