A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑文 黑马帝   /  2011-11-2 09:28  /  2855 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



看传智博客的视频时发现VS内嵌MDF的缺陷 下载是杨中科老师给出的解决代码,下面来解释下这些代码的含义。(其实杨老师写过文章解释过,但一些地方我还是不理解,所以重新查资料又写了一遍,写的不对的地方,大家指出)

string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\")
                || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }

下面解释一下这段代码

1.AppDomain.CurrentDomain.BaseDirectory 读取当前程序的的路径,返回值为字符串 赋值给dataDir然后  Consoel.WriteLine(dataDir )结果为:

E:\program\ADO.NET MDF文件\ADO.NET MDF文件\bin\Debug\

2.判断是否dataDir 是程序的路径 也就是以bin\Debug\ 或\bin\Release\ 结尾(MDF文件存储在Debug 或Release中 )

3.通过调用System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName方法 得到dataDir中的父路径(调用两次Parent属性)

注:Directory 属性开用于创建、移动和枚举通过目录和子目录的静态方法。无法继承此类。

      GetParent()  方法检索指定路径的父目录,包括绝对路径和相对路径。
      FullName 属性获取程序集的显示名称。

4.调用   AppDomain.CurrentDomain.SetData();重新将dataDir的值赋值给DataDirectory;因为程序是通过DataDirectory

的值来连接MDF文件的 这段代码修改了 MDF文件的路径所 所以程i序可以直接连到跟目录的文件内,而不是Debug目录下的MDF.此代码用于控制台和WINFORM。ASP.NET不用写这段代码 ASP中直接将MDF文件放到App_Data文件夹即可.

评分

参与人数 1技术分 +2 收起 理由
杨恩锋 + 2

查看全部评分

1 个回复

正序浏览
值得学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马