gpt4 book ai didi

petapoco - 结果列被排除在 PetaPoco 的自动选择语句之外的原因是什么

转载 作者:行者123 更新时间:2023-12-05 05:28:30 25 4
gpt4 key购买 nike

如果我有一个 ResultColumn 的 POCO 类属性集,然后当我执行 Single<Entity>() 时调用,我的结果列未映射。我已将我的列设置为结果列,因为它的值应该始终 由 SQL 列的默认约束生成。我不希望从业务层注入(inject)或更新此列。我想说的是,我的列的类型是一个简单的 SQL 数据类型,而不是相关的实体类型(正如我所看到的 ResultColumn 主要用于那些类型)。

查看代码,我可以在 PetaPoco 中看到这一行:

// Build column list for automatic select
QueryColumns = ( from c in Columns
where !c.Value.ResultColumn
select c.Key
).ToArray();

为什么结果列被排除在自动选择语句之外,因为据我了解,它们的性质是只读的。所以用于仅选择。当列实际上是相关实体类型(复杂)时,我可以看到这种情况。行。但是我们应该有一个单独的属性,比如 ComputedColumnAttribute这将始终在选择中返回但永远不会在插入或更新中使用...

为什么 PetaPoco 团队当时决定从选择中省略结果列?
那我应该如何读取结果列?

最佳答案

我无法回答为什么创建者没有将它们添加到自动选择中,但我认为这是因为您的特定用例不是他们正在考虑的主要用例。如果您查看 examples and explanation for that feature在他们的网站上,它更适合您在连接或计算中带回的额外列(例如来自查找表的代码值的描述)。在这些情况下,您无法将它们自动添加到选择中,因为它们不是基础表的一部分。

因此,如果您想使用该属性并获取该属性的值,则必须使用您自己的手动选择语句,而不是依赖于自动选择。

当然,使用 PetaPoco 的美妙之处在于您可以轻松修改它以满足您的需要,方法是创建一个新属性,就像您上面建议的那样,或者修改您显示的代码以不从选择中排除这些字段(假设您没有在其他连接类型的情况下使用 ResultColumn)。

关于petapoco - 结果列被排除在 PetaPoco 的自动选择语句之外的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com