【问题标题】:Is it possible to use SQLite.NET with immutable record types?是否可以将 SQLite.NET 与不可变记录类型一起使用?
【发布时间】:2015-01-11 17:40:45
【问题描述】:

标题说明了这一点。 (需要明确的是,SQLite.NET 托管在 here

所有示例都使用可变记录类型,这意味着它们在每个属性定义中都有{ get; set; }。我想在我的项目中尽可能摆脱可变类型,但 SQLite.NET 看起来可能是一个障碍。

例如,如果我尝试获取 1 列类型为 System.String 的查询结果,则会失败。 那么是否可以让 SQLite.NET 使用构造函数而不是属性设置器,或者我必须使用可变类型在 SQLite.NET 中检索和存储数据?

【问题讨论】:

    标签: c# sqlite immutability sqlite.net


    【解决方案1】:

    我不能确定是否可以让 SQLLite 使用构造函数而不是属性。话虽如此,我非常怀疑。

    使用属性要容易得多,因为您可以使用反射来找到与列名匹配的适当成员。使用构造函数这样做会非常痛苦。在这一点上,几乎所有其他 ORM 的工作方式都完全相同。

    如果您真的想使用不可变类型,则需要在 ORM 周围放置一个包装器,该包装器接受填充的对象并返回一个只有不可变属性的 不同 对象。如果您真的想确保没有人使用可变类型,请将它们设为 internal 并将它们放在单独的程序集中。

    当然,这对于不可变类型来说是很多额外的工作,但考虑到 ORM 的性质,它几乎是您唯一的选择。

    【讨论】:

      猜你喜欢
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多