使用带有SQL Server Express的.mdf
数据库的Entity Framework 4.1。
为了进行测试,我尝试使用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="data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\test.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
最佳答案
整个用户实例和AttachDbFileName =方法都有缺陷-充其量! Visual Studio将围绕.mdf
文件(从DataDirectory
到正在运行的应用程序的输出目录)和最有可能的进行复制,您的INSERT
可以正常工作-但您只是在看错误的.mdf
文件 !
如果您要坚持使用这种方法,请尝试在.SaveChanges()
调用上放置一个断点-然后使用SQL Server Mgmt Studio Express检查正在运行的应用程序目录中的.mdf
文件-我几乎可以确定您的数据在那里。
我认为真正的解决方案是
TestDatabase
)Data Source=.\\SQLEXPRESS;Database=TestDatabase;Integrated Security=True
其余所有内容都是,与以前完全相同 ...