2010-11-15 58 views
0

我已經開始使用SubSonic,我想知道如何讓它在插入時忽略DateTime屬性。我正在使用ActiveRecord模板,並使用默認方法在DB側插入時創建日期時間屬性。我怎樣才能允許SQL設置亞音速的日期時間

當我嘗試插入時出現以下錯誤: SqlDateTime溢出。必須介於1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之間。

我寧願不必在代碼中設置日期時間,因爲所有項目都會放入隊列中,我希望他們在datetime上創建的時間就是創建記錄的實際時間。有沒有辦法得到這種行爲?

回答

1

用SubSonic 2覆蓋BeforeInsert()和BeforeUpdate()方法(測試並確認)並設置您想要ReadOnly的列。

public partial class Products 
{ 
    protected override void BeforeInsert() 
    { 
     Schema.GetColumn(Columns.CreatedOn).IsReadOnly = true; 
     base.BeforeInsert(); 
     Schema.GetColumn(Columns.CreatedOn).IsReadOnly = false; 
    } 

    protected override void BeforeUpdate() 
    { 
     Schema.GetColumn(Columns.ModifiedOn).IsReadOnly = true; 
     base.BeforeUpdate(); 
     Schema.GetColumn(Columns.ModifiedOn).IsReadOnly = false; 
    } 
} 

架構是靜態的,所以你可以在你的代碼做一次(甚至從類外),不要再擔心,但我寧願這樣。

我還沒有嘗試過這與SubSonic3但IsReadOnly屬性仍然存在,所以它也應該工作。

相關問題