1

GetHashCode で int が null 可能である場合に問題が発生します

ActiveRecord.tt の GetHashCode の時点で、null 許容チェックが必要です。このようなもの。

<#      
    if(tbl.PK.SysType=="int" && !tbl.PK.Nullable ){
#>        
        public override int GetHashCode() {
            return this.<#=tbl.PK.CleanName #>;
        }        
<#      }#>

(更新) この値は、ビューでは null になる可能性があります。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には、nullではない主キーが必要です。ビューを変更して、null以外の整数またはGUIDであるId列を返すようにする必要があります。

編集:次のようにビューを変更することで、SubSonicで機能するnull以外の主キーを追加できます。

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

1つの欠点は、一貫したIDを取得できないことです。それが問題である場合は、NewID()を列から計算された値に置き換えることができますが、その欠点はパフォーマンスが低下することです。

于 2009-08-20T15:35:45.097 に答える