Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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# Entity Framework 4.1未向SQL Server Express数据库添加任何行_C#_Wpf_Entity Framework_Sql Server Express - Fatal编程技术网

C# Entity Framework 4.1未向SQL Server Express数据库添加任何行

C# Entity Framework 4.1未向SQL Server Express数据库添加任何行,c#,wpf,entity-framework,sql-server-express,C#,Wpf,Entity Framework,Sql Server Express,使用实体框架4.1和SQL Server Express.mdf数据库 出于测试目的,我尝试在WPF应用程序中使用实体模型对SQLServerExpress数据库执行CRUD操作 我对这个概念还不熟悉,我遵循了视频教程并根据它进行了编码 我创建了单个非常简单表的实体模型。我在cs文件中编写了简单代码,使用以下代码向数据库添加一行 testEntities db = new testEntities(); TestTable tb = new TestTable(); tb.Name = txtN

使用实体框架4.1和SQL Server Express
.mdf
数据库

出于测试目的,我尝试在WPF应用程序中使用实体模型对SQLServerExpress数据库执行CRUD操作

我对这个概念还不熟悉,我遵循了视频教程并根据它进行了编码

我创建了单个非常简单表的实体模型。我在cs文件中编写了简单代码,使用以下代码向数据库添加一行

testEntities db = new testEntities();
TestTable tb = new TestTable();
tb.Name = txtName.Text;
tb.Email = txtMail.Text;
db.TestTables.AddObject(tb);
db.SaveChanges();
但是如果我回去检查数据库,没有添加任何数据。请告诉我这里出了什么问题

这是我的连接字符串

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="testEntities" 
         connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\test.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

整个用户实例和AttachDbFileName=方法都有缺陷-最多!Visual Studio将围绕
.mdf
文件(从
数据目录
复制到正在运行的应用程序的输出目录)进行复制,并且最有可能的情况是,您的
插入
工作正常-但您最后看到的是错误的
.mdf
文件

如果您想坚持使用这种方法,请尝试在
.SaveChanges()
调用上放置一个断点-然后使用SQL Server Mgmt Studio Express检查正在运行的应用程序目录中的
.mdf
文件-我几乎可以肯定您的数据在那里

我认为真正的解决办法是

  • 安装SQL Server Express(您已经完成了安装)

  • 安装SQL Server Management Studio Express

  • 在SSMS Express中创建数据库,并为其指定一个逻辑名称(例如,
    TestDatabase

  • 使用其逻辑数据库名称连接到它(在服务器上创建时提供),不要乱动物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.\\SQLEXPRESS;Database=TestDatabase;Integrated Security=True
    
    其他一切都和以前一样


  • @marc_s我更新了问题并添加了连接字符串..我哪里出错了?有错误消息吗?您是否尝试过一步一步地调试应用程序以查看发生了什么?调试器是你最好的朋友,学会使用它。您显示的代码看起来不错,我敢打赌其他地方也有问题(比如您甚至忘记连接处理程序和类似的东西)。@walthereven我没有收到任何错误。我试过了,想听听你的建议。一旦我同意这个分析,我会从头开始。我讨厌在SSE中附加MDF,它会导致许多奇怪的问题。我将在SSMS中创建SSEDB,就像在完整的Sql Server中一样,并使用该格式的连接字符串,而不是使用.mdf。那会让你少头疼。