1

当 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";    

之后,出现此错误。

4

1 回答 1

0

SubSonic 需要一个非空的主键。您需要修改您的视图,使其返回一个非空整数或 Guid 的 Id 列。

编辑:您可以通过如下更改视图来添加适用于 SubSonic 的非空主键:

CREATE VIEW MyView AS
  SELECT NewID() AS Id, *
  FROM MyTable

一个缺点是您不会获得一致的 ID。如果这是一个问题,您可以将 NewID() 替换为从该列计算的值,但这样做的缺点是性能会变慢。

于 2009-08-20T15:35:45.097 回答