【问题标题】:What is the recommended way to create table with PetaPoco (and NPoco)?使用 PetaPoco(和 NPoco)创建表的推荐方法是什么?
【发布时间】:2016-05-28 05:51:00
【问题描述】:

假设我需要一个如下所示的表格:

CREATE TABLE Record (
  Id INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
  Guid UNIQUEIDENTIFIER UNIQUE NONCLUSTERED,
  Version ROWVERSION,
  DateOfBirth DATETIME2,
  Name VARCHAR(64) NOT NULL
)

使用 PetaPoco 和 NPoco 创建上表的推荐方法是什么?

【问题讨论】:

    标签: create-table petapoco npoco


    【解决方案1】:

    PetaPoco 就是将 SQL 用于 SQL 最擅长的事情。因此,使用 PetaPoco 创建表的正确方法是使用 SQL 创建。我们已经收到了一些从 POCO 添加模式生成的请求,但是每个受支持的数据库都有自己的 DDL,因此(正确地)添加它将是一项艰巨的任务。

    它可能会在某一天添加​​,但现在最好将开发时间花在其他功能上。

    也就是说,PetaPoco 是开源的,所以如果处理得当,用于模式生成的 PR 将被愉快地接受 ;)

    最后,虽然我没有密切关注 NPoco,但我认为它不支持从 POCO 生成模式,并且猜测可能是出于同样的原因上面列出的。

    【讨论】:

    • 那么,PetaPoco 完全不知道如何更改架构?我明白了“远离架构更改”并专注于对象映射的观点。我正在寻找至少一个建议(例如,可以使用 FluentMigrator)。
    • 好的,我明白你在问什么。老实说,在我从事的所有内置迁移的项目中,我都使用dbup 来处理这个问题。这实际上意味着我一直在自己制作更改。我曾尝试过其他一些方法,但从未找到一种足够灵活以满足我的需求的方法。 FluentMigrator 引起了我的兴趣,我要去看看。
    • 我比较喜欢 SqlFu 的做法。创建 SQL 来创建表仍然是一项手动工作 - 但该框架可以帮助您(例如,通过为给定的 POCO 属性提供列名)。我看不到这种方法如何将您与特定于产品的 DDL 结合起来,而不是我认为可以通过 PetaPoco 中的即席查询完成的特定于产品的 SELECT 语句
    【解决方案2】:

    我使用迁移工具 (DbUp) 来跟上架构的变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 2019-09-15
      相关资源
      最近更新 更多