Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';是否使用实体框架更新数据库中的行。。。?_C#_Database_Entity Framework_Ado.net_Crud - Fatal编程技术网

C# Can';是否使用实体框架更新数据库中的行。。。?

C# Can';是否使用实体框架更新数据库中的行。。。?,c#,database,entity-framework,ado.net,crud,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()

好吧,这真的很奇怪。我用一个表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”持久化到数据库中!我挠头已经有一段时间了,现在想知道为什么这么简单的操作不起作用。到底有什么问题

EF要求对许多操作具有唯一索引

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

编辑:

看起来您正在从控制台应用程序运行此功能

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

下一步尝试:

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

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

好的,这里有一个长提示。您确定您的连接字符串指向正确的位置吗?连接正常吗

您可以通过使用SQLServerManagementStudio向测试数据库添加一些记录来验证它,然后执行以下操作

foreach (Customer c in db.Customers)
{
    Console.WriteLine(c.Name);
}
请确保数据库文件的“复制到输出目录”属性未设置为“始终复制”。如果设置为“始终复制”,则每次重建应用程序时,数据库都可能被原始副本破坏


请参阅:

是否没有主键?没有自动生成的标识列?尝试将INT-id、identity和主键添加到表中,以便EF具有EntityKey。Name是主键。但是为了你的缘故,我也尝试过用ID列作为主键,但也没有成功!如果你把这个包起来,试试看……接住。。。。block-您是否有任何异常,如果有,具体是什么异常?我没有任何异常…:{是否需要在我的计算机上配置SQL server以使其正常工作?比如可能未启用或其他什么?它似乎连接到数据库很好。当应用程序运行时,它会更新/读取数据库,只是当应用程序退出时,数据不会持久化…但Shiraz和Hightechrider说添加一个主键为Indentity=Yes的int列。这是一个最佳实践,而且更优化:我知道这是最佳实践。这只是一个简单的数据库测试。请参阅我对Hightechrider的答复。为了回答您的问题,设拉子:是。否。否。