我有一个使用Entity Framework的WPF程序(DB第一种方法)。它在我的开发笔记本电脑上工作正常,但它在一开始就在其他计算机上崩溃了,显然是因为它有些无法连接到数据库。
但是关于问题的根源,我在线阅读了很多内容,虽然我没有任何确定的答案,但似乎它与连接字符串和app.config
有关。一般
我在开发笔记本电脑上使用Microsoft SQL Server Management Studio,并在测试设备上安装了Microsoft SQL Server。
整个场景是我想发布我的应用程序,任何用户都可以轻松下载和安装它。
这是我的app.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<entityFramework>
<defaultConnectionFactory
type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="AssetManagementDBEntities"
connectionString="metadata=res://*/Entity.AssetManagementDBModel.csdl|res://*/Entity.AssetManagementDBModel.ssdl|res://*/Entity.AssetManagementDBModel.msl;provider=System.Data.SqlClient;provider connection string="initial catalog=AssetManagementDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient"/>
</connectionStrings>
</configuration>
另外,我不得不说,我找不到.dll
,csdl
和ssdl
必须包含的msl
文件!
&#34;构建行动&#34; .edmx
文件的设置为EntityDeploy
答案 0 :(得分:0)
最后我找到了自己的解决方案:
正如here所解释的那样,使用DB-first方法是不可能的,因为它每次都尝试初始化模型,因此需要DB存在。所以我只是复制了基于我的数据库创建的类和文件,并像代码优先方法一样使用它们(上面的链接很好地解释了它)。请注意,您应该完全删除ConnectionString
,因为正如在该链接中所解释的那样,DB上下文会处理这个问题。
请注意,您必须在计算机上安装SQLEXPRESS或LocalDB (如果已安装Visual Studio 2010或2012,则已安装其中一个)。
现在,当程序第一次运行时,它会在C:\users\[your_user_name]
中创建数据库文件(应该有2个文件,主数据库文件和log
文件)。
如果您对细节有疑问,请发表评论