今天我在维护一个项目,它的数据库很混乱,需要进行大量的重构,并发布到客户机器上。
我知道可以添加一个只包含数据库脚本的 SQL Server 数据库 项目,并创建一个 .dacpac
文件,从而允许我自动更改客户端的数据库。
此外,我知道可以将一个 .mdf
文件添加到 App_Data
目录甚至是 Solution_Data
文件夹中,并在那里放置我的数据库。我想已经存在的 localDb
允许我在没有 SQL Server 的情况下启动我的解决方案
最后,我知道 Entity Framework 存在其自己的迁移。但我不想使用它,因为它的迁移无法添加和更改索引,而且当我需要描述复杂的迁移场景时,我没有足够的灵活性。
我的目标:
- 自动生成迁移脚本以自动更新客户的数据库。
- 使我的解决方案自包含,任何新加入项目的程序员都不需要在自己的机器上安装 SQL Server。
- 能够在1-2次点击中更新本地(开发)数据库。
- 能够回溯数据库更改历史记录(我有 TFS 服务器)
- 能够在解决方案中拥有干净的(仅带词典或查找表)数据库,并具有最新的数据库结构。
- 此外,我想能够自动或非常容易地更新我的 DB 模型 (EF 或
.dbml
)。
所以我想问:
如果我想实现我的目标,使用这两种方法的优缺点是什么?
我是否应该使用这些工具的一种组合方式?
或者我不知道其他来自 MS 的现有工具吗?
有没有一种方法可以从这个数据库更新我的 DAL 模型?
LocalDB
是SQL Server Express的另一个面向开发人员的版本 - 如果您想在本地机器上使用.mdf
文件,则必须安装 SQL Server Express。如果您将数据库放置在网络上的服务器上(它确实属于那里),则可以连接任意数量的计算机而无需安装本地SQL Server副本。 - marc_s