Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net “编程数据库结构”卷展栏_.net_Relational Database - Fatal编程技术网

.net “编程数据库结构”卷展栏

.net “编程数据库结构”卷展栏,.net,relational-database,.net,Relational Database,我希望有一个数据模型的定义,让我的应用程序在启动时检查并同步它 不幸的是,我找不到任何这样做的产品,所以我想听听你是否知道一个或如果你有如何解决这个问题的建议 我想到的解决方案是:应用程序在启动时读取定义(例如XML文件),并与DB结构进行比较。如果不同,则生成altertable语句并采用。如果某些表中缺少默认记录,它还可能在这些表中创建默认记录。它应该支持多个RDBMS(ms sql、oracle、db2等)并在.NET中运行 在我看来,使用数百个SQL脚本和回滚脚本执行此操作似乎不太实际,

我希望有一个数据模型的定义,让我的应用程序在启动时检查并同步它

不幸的是,我找不到任何这样做的产品,所以我想听听你是否知道一个或如果你有如何解决这个问题的建议

我想到的解决方案是:应用程序在启动时读取定义(例如XML文件),并与DB结构进行比较。如果不同,则生成
altertable
语句并采用。如果某些表中缺少默认记录,它还可能在这些表中创建默认记录。它应该支持多个RDBMS(ms sql、oracle、db2等)并在.NET中运行

在我看来,使用数百个SQL脚本和回滚脚本执行此操作似乎不太实际,而且容易出错


我可以自己开始编程,但可能有一些东西非常漂亮?

您的数据库定义应该由源代码定义和创建(如EF代码中的第一个),或者与源代码一起进行版本控制。看看像这样的工具,我同意将其与源代码一起进行版本控制。您也可以利用@Andersforgren建议的O/RM。另一种简单的方法可能是将数据结构版本存储在某个地方,并在版本之间编写补丁。这样,您的程序就可以应用所有必要的补丁程序来更新给定的DB。Liquibase非常接近我要搜索的东西。但在.NET中还不能直接从我的应用程序调用它。但我会考虑从命令行调用它。EF的问题是我只在.NET2上,我不知道有什么ORM解决方案可以解决这个问题。我喜欢Liquibase解决方案,因为XML文件可以添加到与源代码相同的VCS中。