当getHashCode
上的int可以为空时,会出现问题在ActiveRecord.tt上的GetHashCode点上,需要一个可空的检查。 这样的事情。
<#
if(tbl.PK.SysType=="int" && !tbl.PK.Nullable ){
#>
public override int GetHashCode() {
return this.<#=tbl.PK.CleanName #>;
}
<# }#>
(更新) 视图上的此值可以为空。 我使用我在inet上找到的代码包含了视图。
const string TABLE_SQL=@"SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
union
select Table_catalog, table_schema, table_name, 'View' table_type
from information_schema.views";
之后,出现此错误。
答案 0 :(得分:0)
SubSonic需要一个非空的主键。您需要修改视图,以便返回一个非空整数或指南的Id列。
编辑:您可以通过更改视图来添加对SubSonic有效的非空主键,如下所示:
CREATE VIEW MyView AS
SELECT NewID() AS Id, *
FROM MyTable
一个缺点是你不会得到一致的Id。如果这是一个问题,你可以用从列计算的值替换NewID(),但缺点是性能会变慢。