2009-08-19 67 views
1

有當INT爲空上的GetHashCode如果INT爲空

在的GetHashCode上ActiveRecord.tt點有需要可空檢查有問題的ActiveRecord和GetHashCode失敗。 就是這樣。

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

(更新) 該值在視圖上可以爲空。 我已經在inet上找到了使用此代碼的視圖。

const string [email protected]"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

爲什麼主鍵可以爲空? – 2009-08-20 08:50:52

+0

因爲它在視圖上爲空! 我不僅包括表格,還包括使用我在互聯網上找到的代碼的視圖。 常量字符串TABLE_SQL = @ 「SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = '基表' \t工會 選擇TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME, '查看' TABLE_TYPE 從INFORMATION_SCHEMA.VIEWS」; 順便說一句,意見是非常重要的! – Aristos 2009-08-20 14:08:21

回答

0

SubSonic需要一個非空的主鍵。您需要修改您的視圖,以便它返回一個非空整數或指導的Id列。

編輯:您可以添加一個非空主鍵會改變你的看法如下亞音速的工作:

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

的一個缺點是,你不會得到一個一致的標識。如果這是一個問題,你可以用從列中計算出的值替換NewID(),但是缺點是性能會變慢。

+0

我會檢查是否有這個問題的意見,可以有一個獨特的主鍵 - 但我相信視圖的使用是至關重要的,需要一種方法來處理他們在亞音速3 – Aristos 2009-08-20 18:26:09

+0

您可能能夠簡單加強你的觀點一點點來解決這個問題。我編輯了答案以添加示例 – 2009-08-20 19:13:53