C# Can';是否使用实体框架更新数据库中的行。。。?
好吧,这真的很奇怪。我用一个表Customer创建了一个简单的数据库,该表只有一列Name。从数据库中,我自动生成了一个ADO.NET实体数据模型,并尝试向其中添加一个新客户,如下所示: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()
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文件中是否有连接字符串
- 您的解决方案中是否有多个项目
- 你有例外吗
- 使用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的答复。为了回答您的问题,设拉子:是。否。否。