无法将 SQL Server LocalDB 用于我的 WPF 应用程序



我有一个WPF应用程序,其实体框架连接到SQL Server 2017。我将给我的客户一个试用版/演示版进行测试。由于我不想让他现在就安装一个完整的SQL Server,所以我将.mdf数据库添加到根目录中,并尝试使用SQL Server LocalDB解决方案来连接。

因此,我使用高级安装程序部署软件,并添加所有先决条件。当我把它安装在我正在编码的机器上时,这个程序运行得很好,但只要我尝试其他电脑,它就不会失效。在开始时有一个登录窗口,在放置凭据后,该窗口要么消失,要么在某些情况下没有响应。

我尝试了一堆不同类型的Connection字符串,但到目前为止没有成功。这是主连接字符串:

<add name="IncomsDatabase" 
     connectionString="Server=(LocalDB)MSSQLLocalDB; Integrated Security=true ;AttachDbFileName=|DataDirectory|Incoms.mdf" 
     providerName="System.Data.SqlClient"/>

我甚至将|DataDirectory|更改为根文件夹的直接位置,但它也不起作用。

我还尝试了不同版本的SQL Server LocalDB,如2017、2016和2014,但都没有成功。

如果有人能想出一个变通办法,我将不胜感激。

有两件事最有可能出错:

1(实例名称。Localdb有一个实例名称,就像";"满";sql服务器,也许它不是默认的。您可以使用检查安装的实例

SqlLocalDB.exe i

这将安装在:

 C:Program FilesMicrosoft SQL ServernnnToolsBinn

其中nnn是sql server版本号。大概是120左右。

您还可以获得有关哪些数据库与特定实例关联的信息。例如

SqlLocalDB.exe i "MSSQLLocalDB"

mdf位置。

用户无法写入程序文件中的文件。当你在一个应用程序上工作时,代码可能不在程序文件中。一个数据库,最终与你的exe在你的垃圾箱将工作良好。当你安装一个应用程序时,可能是你的mdf在程序文件下,用户将无法连接到他们无法写入的数据库。

DataDirectory应在appdata中。

仔细检查设置为什么。

你应该有这样的东西:

AppDomain.CurrentDomain.SetData("DataDirectory", uri);

其中,uri是使用Environment.SpecialFolder选项之一(如LocalApplicationData(使用appdata的路径生成的。ApplicationData指的是漫游。

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));

您还需要一个应用程序文件夹,可能在另一个文件夹中,也就是您的公司名称。

客户端电脑可能没有漫游应用程序数据,或者每次登录都会重置。

我会检查你的安装是否在你运行时将mdf复制到预期的文件夹。

最新更新