Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为应用程序存储MSSQL LocalDB_C#_.net_Localdb_Wpd - Fatal编程技术网

C# 为应用程序存储MSSQL LocalDB

C# 为应用程序存储MSSQL LocalDB,c#,.net,localdb,wpd,C#,.net,Localdb,Wpd,我一直在使用LocalDB.mdf文件来构建我的应用程序,但现在需要在生产中使用它并创建一个可安装的应用程序 经过研究,存储此类文件的最佳位置似乎是/Appdata/Local/文件夹 如果LocalDB.mdf文件不存在或已被删除,我打算在其中创建一个新的LocalDB.mdf文件 我在我的应用程序资源中有一个预先制作的LocalDB.mdf文件,我想在第一次运行时将其复制到这个/Appdata/Local/文件夹中,但我看到一个访问被拒绝的错误 我可以为该文件夹创建一个空白文件 代码如下:

我一直在使用LocalDB.mdf文件来构建我的应用程序,但现在需要在生产中使用它并创建一个可安装的应用程序

经过研究,存储此类文件的最佳位置似乎是
/Appdata/Local/
文件夹

如果LocalDB.mdf文件不存在或已被删除,我打算在其中创建一个新的LocalDB.mdf文件

我在我的应用程序资源中有一个预先制作的LocalDB.mdf文件,我想在第一次运行时将其复制到这个
/Appdata/Local/
文件夹中,但我看到一个访问被拒绝的错误

我可以为该文件夹创建一个空白文件

代码如下:

string appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        string dvAppDataFolder = appDataFolder + @"\MyApp";
        AppDomain.CurrentDomain.SetData("DataDirectory", dvAppDataFolder);

        if (!Directory.Exists(dvAppDataFolder))
            Directory.CreateDirectory(dvAppDataFolder);

        if (!File.Exists(dvAppDataFolder + "LocalDB.mdf"))
        {
            File.WriteAllBytes(dvAppDataFolder, LokiServer.Properties.Resources.newDB);
        }
另外,我这样做对吗?

这一行

if (!File.Exists(dvAppDataFolder + "LocalDB.mdf")) 
这可能是错误的。缺少反斜杠,最好使用
路径。合并
而不是字符串串联

最后,您希望写入文件而不是文件夹

 string fileName = Path.Combine(dvAppDataFolder,"LocalDB.mdf");
 if (!File.Exists(fileName))
 {
        File.WriteAllBytes(fileName, LokiServer.Properties.Resources.newDB);
 }
你做得对吗?视情况而定。如果您的应用程序数据应该为目标机器的每个用户保持分离,那么您是对的,但是如果您希望您的数据库对该机器的所有用户都可用,那么请使用

string appDataFolder = Environment.GetFolderPath
                      (Environment.SpecialFolder.CommonApplicationData);