【发布时间】:2012-09-27 11:56:37
【问题描述】:
ServiceStack OrmLite 究竟如何处理默认列和计算列?
特别是我得到了错误
The column "PointsAvailable" cannot be modified because it is either a computed column or is the result of a UNION operator.
此列在 SQL Server 2008 数据库中配置为计算列。
OrmLite 似乎确实对计算列做了一些事情,因为您可以将属性“[ServiceStack.DataAnnotations.Compute]”添加到模型中的属性中。
进入代码,“OrmLiteDialetBase.cs”中的“ToInsertRowStatement”函数被调用。当该函数检查是否设置了 AutoIncrement 属性时,它不检查是否设置了 IsComputed 属性。
我不知道这是一个错误还是我只是用错了。
【问题讨论】:
-
我会尝试为 IsComputed 添加检查。如果这解决了问题,请在 github 上创建一个带有错误修复的拉取请求。 ServiceStack 是一个架构完善的程序,因此不太可能在多个地方进行此检查。
-
为了澄清我之前的评论,您可以在源代码中执行此操作,然后重新编译二进制文件。不应该超过 5 分钟。
标签: c# sql-server servicestack ormlite-servicestack