【问题标题】:Can't update rows in my database using Entity Framework...?无法使用实体框架更新我的数据库中的行...?
【发布时间】:2013-06-06 23:22:38
【问题描述】:

好吧,这真的很奇怪。我用一个表 Customer 制作了一个简单的数据库,它有一个列 Name。我从数据库中自动生成了一个 ADO.NET 实体数据模型,并且我正在尝试向其中添加一个新客户,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main()
        {
            Database1Entities db = new Database1Entities();
            Customer c = new Customer();
            c.Name = "Harry";
            db.AddToCustomer(c);
            db.SaveChanges();
        }
    }
}

但它不会将客户“Harry”保存到数据库中!我一直在摸不着头脑,现在想知道为什么这么简单的操作不起作用。到底是什么问题!?

【问题讨论】:

  • 没有主键?没有自动生成的身份列?尝试将 INT id、身份、主键添加到表中,以便 EF 具有 EntityKey。
  • 名称是主键。但是为了您的缘故,我也尝试使用 ID 列作为主键,但这也不起作用!
  • 如果你把它包装在一个 try....catch.... 块中 - 你会得到任何异常吗?如果有 - 究竟是什么异常??
  • 我没有得到任何异常... :{
  • 我是否需要在我的计算机上使用 SQL Server 进行配置才能使其正常工作?就像它可能没有启用或什么?它似乎可以很好地连接到数据库。它会在应用程序运行时更新/读取数据库,只是在应用程序退出时数据不会持久化......

标签: c# database entity-framework ado.net crud


【解决方案1】:

EF 要求您对许多操作都有一个唯一索引。

尝试将身份字段(主键)添加到您的表中。删除并重新创建您的模型,然后重试。

编辑:

您似乎是从控制台应用程序运行它。

  • app.config 文件中有连接字符串吗?
  • 您的解决方案中是否有多个项目?
  • 您是否遇到任何异常情况?

编辑2:

接下来要尝试的事情:

  • 使用 SQL Server 分析器查看发送到数据库的内容
  • 在编辑器中打开EF模型查看xml,检查是否有错误

【讨论】:

  • 但是 Shiraz 和 Hightechrider 说添加一个 Indentity = Yes 作为主键的 int 列。这是一个最佳实践,并且更加优化:stackoverflow.com/questions/1603472/…
  • 我知道这是最佳做法。这只是一个简单的数据库测试。请参阅我对 Hightechrider 的回复。为了回答你的问题,设拉子:是的。没有。没有。
【解决方案2】:

db 放在using 语句中,以确保在进程退出之前干净地关闭连接/事务。

【讨论】:

    【解决方案3】:

    好的,这是一个长镜头。您确定您的连接字符串指向正确的位置吗?连接正常吗?

    您可以通过使用 SQL Server Management Studio 向您的测试数据库添加一些记录来验证它,然后执行类似的操作

    foreach (Customer c in db.Customers)
    {
        Console.WriteLine(c.Name);
    }
    

    【讨论】:

      【解决方案4】:

      确保数据库文件的“复制到输出目录”属性未设置为“始终复制”。如果是这样,每次重建应用程序时,数据库可能会被原始副本破坏。

      见:Entity Framework not flushing data to the database

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多