【问题标题】:Where to put database under visual studio solutions for build and click once deployment?将数据库放在 Visual Studio 解决方案下进行构建并单击一次部署的位置?
【发布时间】:2011-11-25 02:03:35
【问题描述】:

我正在编写一个应用程序,它将访问本地数据库 (MS Access) 作为远程 SQL 服务器的缓存。

我有一个“逻辑”项目和一个“UI”项目。当前在 UI 项目中的 .accdb 文件并将构建操作设置为内容,如果较新则复制。但是,这在某种程度上感觉确实不对,但我不确定处理它的正确系统方法是什么。

我应该创建一个数据库项目吗?但老实说,我对数据库项目一无所知,也不知道从哪里开始学习。此外,Visual Studio 中可用的选项似乎仅基于 SQL。

我在想也许我应该创建一个新项目,将 .accdb 作为内容,并在项目中添加用于版本升级、迁移、架构更新的代码,这些代码目前在解决方案中的任何位置都没有。

我应该往哪个方向走?

【问题讨论】:

    标签: c# database visual-studio deployment clickonce


    【解决方案1】:

    我认为您应该必须使用默认选项:Copy To Output Directory=copy if newer' 这样,每当您构建项目时,构建都会复制该文件。

    【讨论】:

    • 已经在使用,但我担心这是否会破坏 data-logic-ui 分离。我目前是一个孤独的程序员,但如果这个项目是基于团队的,那么这个组织似乎很合适,是吗?也没有合适的项目来添加数据库迁移代码。
    • @Jake - 不要将文件的位置与 data-ui 分离相结合。 Ms-Access 是一个文件系统数据库,您可以通过传递连接字符串或数据库文件的位置在“逻辑”中使用它。
    【解决方案2】:

    为了创建清晰的职责分离,请将您的数据访问权限放在 UI 项目以外的地方;即在一个单独的项目中。然后,您的 UI 项目将使用数据访问项目来执行相关的数据操作。

    提取您的 UI 项目知道并且您的数据访问项目实现的接口(IDataAccess 或其他东西)。您可以将接口放在您的 UI 代码引用和数据访问项目引用和实现的另一个项目(例如,称为 ShareInterfaces)中。然后,您可以在 UI 代码中使用依赖注入来实现 IDataAccess。

    有很多开源依赖注入(或有时称为 IoC)框架。我之前用过 Ninject,它在简单的情况下效果很好——不需要 XML 配置,你可以在代码中以声明方式完成所有绑定。

    依赖注入不是必需的,但它确实提供了一种很好的方法来解耦代码中的依赖并使代码可单元测试。

    【讨论】:

      猜你喜欢
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多