将数据库放在visual studio解决方案下用于构建和点击一次部署的位置?

时间:2011-11-25 02:03:35

标签: c# database visual-studio deployment clickonce

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

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

我应该创建一个数据库项目吗?但老实说,在数据库项目方面我很无能为力,不知道从哪里开始学习。此外,visual studio中可用的选项似乎只是基于SQL。

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

我应该走哪条路?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

有许多开源依赖注入(或者有时已知的IoC)框架。我之前使用过Ninject,它适用于简单的情况 - 不需要XML配置,你可以在代码中以声明方式完成所有绑定。

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