2012-07-18 55 views
5

使用实体框架4.1与SQL Server Express .mdf数据库一起使用。实体框架4.1不向SQL Server Express数据库添加任何行

为了测试目的,我试图在WPF应用程序中使用实体模型在SQL Server Express数据库上执行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> 
+0

@marc_s我已经更新的问题,并添加连接字符串。 .I即将出错 – panindra 2012-07-18 19:12:54

+0

任何错误信息?您是否试图一步一步地调试应用程序以查看发生了什么?调试器是你最好的朋友,学会使用它。你所显示的代码看起来不错,我敢打赌,在别的地方还有问题(就像你忘记连接处理程序和类似的东西)。 – walther 2012-07-18 19:13:49

+0

@walthereven我没有得到任何错误。我试过我试试赶上它没事 – panindra 2012-07-18 19:20:21

回答

6

整个用户实例和AttachDbFileName =方法是有缺陷的 - 在最好的! Visual Studio将只是罚款复制围绕.mdf文件(从DataDirectory到正在运行的应用程序的输出目录),并最有可能,你INSERT作品 - 但你刚才到底在看错误.mdf文件

如果你想坚持使用这种方法,然后尝试把一个断点在.SaveChanges()呼叫 - 然后检查.mdf文件中运行的应用程序的使用SQL Server管理Studio Express的目录 - 我几乎可以肯定你的数据在那里。

在我看来真正的解决方案

  1. 安装SQL Server Express(和你已经做到这一点无论如何)

  2. 安装SQL Server Management Studio中快速

  3. 中创建您的数据库SSMS Express,给它一个逻辑名称(例如TestDatabase

  4. 连接使用其逻辑数据库名称(当你在服务器上创建它给出)它 - 和周围不乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将是这样的:

    Data Source=.\\SQLEXPRESS;Database=TestDatabase;Integrated Security=True 
    

    和其他一切是正是和以前一样......

+0

thansk您的建议.i将再次尝试形式划痕 – panindra 2012-07-18 20:05:33

+1

我同意此分析。我讨厌在SSE中附加mdfs,它可能会导致很多奇怪的问题。我将在SSMS中创建SSE数据库,就像在全面的Sql Server中一样,并使用该格式的连接字符串,而不是使用.mdf。这应该让你更少头痛。 – GrayFox374 2012-07-18 20:30:06