无法使用Entity Framework更新数据库中的行...?

时间:2010-05-15 16:42:24

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

好的,这真的很奇怪。我用一个表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”留在数据库中!我一直在摸不着头脑,现在想知道为什么这么简单的操作不起作用。究竟是什么问题!?

4 个答案:

答案 0 :(得分:1)

EF要求您拥有许多操作的唯一索引。

尝试在表格中添加标识字段(主键)。删除并重新创建模型,然后重试。

编辑:

看起来你是从控制台应用程序运行它。

  • app.config文件中是否有连接字符串?
  • 您的解决方案中是否有多个项目?
  • 你有任何例外吗?

EDIT2:

接下来要尝试的事情:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

好的,这是一个远景。您确定您的连接字符串是否指向正确的位置?连接正在发挥作用?

您可以使用SQL Server Management Studio将一些记录添加到测试数据库中进行验证,然后执行类似

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

答案 3 :(得分:0)

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

请参阅:Entity Framework not flushing data to the database