|DataDirectory|在哪里定义?

 2023-02-17    465  

问题描述

这是我系统上的文件在哪里?

各个问题和互联网的问题和答案,但我找不到任何答案的答案.

|DataDirectory|在哪里定义?

所有都是默认的,但我找不到文件本身,

它不存在.

其中/如何获得 datadirectory | 定义?

保存的文件在哪里,甚至存在吗?如果没有,这是怎么回事?

edit :文件不是 AppDomain.CurrentDomain.GetData(“DataDirectory”).ToString();所有(sqatered)答案告诉我应该是.当我更改模型时,调试器打破了对模型的na不平等时,它必须在某个地方. 不是.

推荐答案

|DataDirectory|不是文件本身.一篇相当旧的MSDN文章的报价:

默认情况下, | datadirectory | 变量将扩展如下:

  • 对于放置在用户计算机目录中的应用程序,这将是应用程序的(.exe)文件夹.
  • 对于在ClickOnce下运行的应用程序,这将是Clickonce创建的特殊数据文件夹
  • 对于Web应用程序,这将是App_Data文件夹

在引擎盖下, | datadirectory | 的值仅来自应用域上的属性.可以通过这样做来更改该值并覆盖默认行为:

AppDomain.CurrentDomain.SetData("DataDirectory", newpath)

有关您的模式不一致的另一句话:

使用本地数据库文件时要知道的一件事是将它们视为任何其他内容文件.对于桌面项目,这意味着默认情况下,每次构建项目时,数据库文件将被复制到输出文件夹(又称箱). F5之后,这就是磁盘上的外观

MyProject\Data.mdf

 MyProject\MyApp.vb

 MyProject\Bin\Debug\Data.mdf

 MyProject\Bin\Debug\MyApp.exe

在设计时,数据工具使用myproject \ data.mdf.在运行时,该应用将使用输出文件夹下的数据库.副本的结果是,许多人的印象是该应用程序没有将数据保存到数据库文件中.实际上,这仅仅是因为涉及的数据文件有两个副本.通过数据库资源管理器查看架构/数据时,也适用.这些工具是使用项目中的副本,而不是bin文件夹中的副本.

其他推荐答案

| datadirectory |算法位于system.data.dll组件中,内部system.data.common.dbconnectionoptions类.这里如 ilspy (注意源中现在可用的参考源存储库中可用:https://github.com/Microsoft/referencesource/blob/e458f8df6ded689323d4bd1a2a2a725ad32668aaec/system.data.entity.entity/system/data/entityclient/dbconnectionclient/dbconnectionoptions.cs ):

):

):

):

internal static string ExpandDataDirectory(string keyword,
                                           string value,
                                           ref string datadir)
{
    string text = null;
    if (value != null && 
        value.StartsWith("|datadirectory|", StringComparison.OrdinalIgnoreCase))
    {
        string text2 = datadir;
        if (text2 == null)
        {
            // 1st step!
            object data = AppDomain.CurrentDomain.GetData("DataDirectory");
            text2 = (data as string);
            if (data != null && text2 == null)
                throw ADP.InvalidDataDirectory();

            if (ADP.IsEmpty(text2))
            {
                // 2nd step!
                text2 = AppDomain.CurrentDomain.BaseDirectory;
            }
            if (text2 == null)
            {
                text2 = "";
            }
            datadir = text2;
        }

        // 3rd step, checks and normalize
        int length = "|datadirectory|".Length;
        bool flag = 0 < text2.Length && text2[text2.Length - 1] == '\\';
        bool flag2 = length < value.Length && value[length] == '\\';
        if (!flag && !flag2)
        {
            text = text2 + '\\' + value.Substring(length);
        }
        else
        {
            if (flag && flag2)
            {
                text = text2 + value.Substring(length + 1);
            }
            else
            {
                text = text2 + value.Substring(length);
            }
        }
        if (!ADP.GetFullPath(text).StartsWith(text2, StringComparison.Ordinal))
            throw ADP.InvalidConnectionOptionValue(keyword);
    }
    return text;
}

因此,它首先在当前的AppDomain数据中查看(默认情况下,我相信没有” datadirectory”数据),然后到达当前的AppDomain Base Directory.其余的主要是检查路径根和路径归一化.

其他推荐答案

在 MSDN论坛对此有一个类似但简化的问题,该问题说:

默认情况下| datadirectory |指向您的应用程序文件夹(正如您在原始问题中弄清楚的那样:到app_data).

由于只是通往数据库的替换路径,因此您可以使用 appDomain.setdata 自己定义路径.

以上所述是小编给大家介绍的|DataDirectory|在哪里定义?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34248.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。