C# 支持多个数据库管理系统;更新客户端数据库的最佳策略';更新过程中发生了什么?
我们的产品支持多个数据库。目前,我们支持FireBird和MSSql,Oracle未来也会得到支持 当我们推出产品更新时,我们还可能需要更新客户机的数据库模式 传统上,我们有适合DB版本的脚本,可以执行“ALTERTABLEADDCOLUMN”之类的操作,以便将数据库升级到正确的版本。这变得很麻烦,因为我们必须维护两组sql脚本(如果我们将Oracle添加到混合中,还会有更多的sql脚本) 我们在数据库层中使用实体框架。EF已包含数据库的架构。我想知道-是否有一种巧妙的方法来使用EF及其模式知识来处理对客户端数据库的更新 编辑-C# 支持多个数据库管理系统;更新客户端数据库的最佳策略';更新过程中发生了什么?,c#,asp.net,entity-framework,c#-4.0,C#,Asp.net,Entity Framework,C# 4.0,我们的产品支持多个数据库。目前,我们支持FireBird和MSSql,Oracle未来也会得到支持 当我们推出产品更新时,我们还可能需要更新客户机的数据库模式 传统上,我们有适合DB版本的脚本,可以执行“ALTERTABLEADDCOLUMN”之类的操作,以便将数据库升级到正确的版本。这变得很麻烦,因为我们必须维护两组sql脚本(如果我们将Oracle添加到混合中,还会有更多的sql脚本) 我们在数据库层中使用实体框架。EF已包含数据库的架构。我想知道-是否有一种巧妙的方法来使用EF及其模式知识
这是EF 4.0您没有提到您使用的是哪个版本的EF。在V4中,您可以使用“代码优先”模型。退房不过,我不能100%确定它是否能在您需要的所有DBs中得到支持。[edit]这将只创建新的架构,而不更新现有架构[/edit]
这可能需要一些工作,但可能值得切换到nHibernate,它支持更广泛的DBs并自动更新模式。您没有提到您正在使用哪个版本的EF。在V4中,您可以使用“代码优先”模型。退房不过,我不能100%确定它是否能在您需要的所有DBs中得到支持。[edit]这将只创建新的架构,而不更新现有架构[/edit]
这可能需要一些工作,但可能值得切换到nHibernate,它支持更多种类的数据库并自动更新模式。代码优先自动模式生成的问题是它不支持版本控制,它只是删除数据库并重新创建,我想他的客户不会希望这样。同样的情况也发生在fluent Nhibernate模式生成中,EF团队应该正在为下一个CTP开发一个迁移解决方案。我原以为EF4也会这么做,但我找不到任何东西在EF4上找到一个否定(官方):我会-1的。因为CODEST不处理任何重构机制——我认为所有.NET产品(包括VisualStudio)中的模式生成都是为了开发而不是为了生产使用。任何数据库端重构都是不可能的。代码优先自动模式生成的问题在于它不支持版本控制,它只是删除数据库并重新创建,我认为他的客户不会希望这样。同样的情况也发生在fluent Nhibernate模式生成中,EF团队应该正在为下一个CTP开发一个迁移解决方案。我原以为EF4也会这么做,但我找不到任何东西在EF4上找到一个否定(官方):我会-1的。因为CODEST不处理任何重构机制——我认为所有.NET产品(包括VisualStudio)中的模式生成都是为了开发而不是为了生产使用。任何数据库端重构都不可能使用它们。