带有Entity Framework的WPF应用程序,适用于app.config的设置

时间:2016-06-28 11:32:29

标签: c# sql-server wpf entity-framework-6

我有一个使用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=&quot;initial catalog=AssetManagementDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"
             providerName="System.Data.EntityClient"/>
    </connectionStrings>
</configuration>

另外,我不得不说,我找不到.dllcsdlssdl必须包含的msl文件!

&#34;构建行动&#34; .edmx文件的设置为EntityDeploy

1 个答案:

答案 0 :(得分:0)

最后我找到了自己的解决方案:

正如here所解释的那样,使用DB-first方法是不可能的,因为它每次都尝试初始化模型,因此需要DB存在。所以我只是复制了基于我的数据库创建的类和文件,并像代码优先方法一样使用它们(上面的链接很好地解释了它)。请注意,您应该完全删除ConnectionString,因为正如在该链接中所解释的那样,DB上下文会处理这个问题。

请注意,您必须在计算机上安装SQLEXPRESS或LocalDB (如果已安装Visual Studio 2010或2012,则已安装其中一个)。

现在,当程序第一次运行时,它会在C:\users\[your_user_name]中创建数据库文件(应该有2个文件,主数据库文件和log文件)。

如果您对细节有疑问,请发表评论