【问题标题】:LINQ to SQL: Alter Table or Add New Table to Existing DatabaseLINQ to SQL:更改表或向现有数据库添加新表
【发布时间】:2011-01-11 22:20:13
【问题描述】:

LINQ to SQL 是否允许修改表,类似于创建表的方式DataContext.CreateDatabase()

我知道修改数据库是不好的做法,但是,可能需要将新信息添加到我们的数据结构中。我想知道 LINQ to SQL 是否允许推送系统更改现有表?

如果没有针对此功能的内置 LINQ to SQL 类,解决此问题的最佳方法是什么?

更新:

这似乎是不可能的。我已请求将一项新功能添加到 .NET Framework。如果您也有兴趣,请投票:connect.microsoft.com Feature Request

另见问题Is it possible to use Linq to ALTER a database table?

【问题讨论】:

  • 所以你是说你有一个现有的数据库,修改你的数据结构,重新编译,并且想要自动更新数据库以匹配?
  • @Gabe:是的。也许使用 DataContext.ModifyDatabase() 之类的方法,它会提供必要的 SQL 语句来更改现有表。

标签: c# .net linq linq-to-sql alter-table


【解决方案1】:

我不知道有什么方法可以做到这一点...我认为鉴于 LINQ 正试图抽象出数据库的结构,这可能不是正确的工具。

我会打开一个到数据库的连接并对原始数据库执行 ALTER TABLE 语句。

【讨论】:

  • 我希望避免这种情况,但我的小改动应该没问题。
【解决方案2】:

我认为您正在寻找的术语是“数据库迁移”,由 ruby​​ on rails 推广。对于.Net,有MigratorDotNet。它根本与 Linq To SQL(或任何其他 ORM)无关,但它可能有助于您完成目标。

这是 .Net 的 some other implementations

【讨论】:

    【解决方案3】:

    查看 Paul Stovell 在 How to deploy a database 上的精彩文章。我过去也使用SQL Deploy 取得了很大的成功。

    【讨论】:

      【解决方案4】:

      一种方法是制作工具

      1.- 工具必须知道旧的数据库模式 2.- 工具必须知道新的数据库架构

      只做升级数据库的方法,这里举个例子

          table Person (old)          table Person (new)
           id                           id
           name                         name
                                        age
      

      然后从旧数据库中选择所有,然后在更新的数据库中创建新行

          new person {
             id=oldPerson.id;
             name=oldPerson.name
              age=defaultAge;
             }
      

      【讨论】:

        猜你喜欢
        • 2017-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多