我使用NHibernate 4.0.0.4000(與代碼映射)和SQL Server 2012NHibernate的讀取從SQL Server時間戳列
我不得不進入表內,以(其中包括)含有timestamp
(否則也已知作爲rowversion)列。到現在爲止,我可以通過在實體/映射中不使用它來簡單地忽略該列。
現在我想使用它來查看自上次檢查問題表以來哪些行發生了更改。
由於時間戳只能由SQL Server更改,NHibernate生成的任何語句都必須忽略此列。我沒有找到解決這個問題的方法。
我的實體:
public class TblAnwendungsbelegposition {
public virtual int ANWBID { get; set; }
// Other properties cut out for readability
public virtual byte[] upsize_ts { get; set; }
}
我的映射:
public class TblAnwendungsbelegpositionMap : ClassMapping<TblAnwendungsbelegposition> {
public TblAnwendungsbelegpositionMap() {
Table("tbl_anwendungsbelegposition");
Schema("dbo");
Lazy(true);
Id(x => x.ANWBID, map => map.Generator(Generators.Identity));
//Other properties cut out for readability
Property(x => x.upsize_ts, map => map.Access(Accessor.ReadOnly));
}
}
結果此版本:
作爲e無法更新時間戳列
在期間讀取(在自動Session.Flush()
上關閉使用語句環繞數據庫連接)的錯誤消息。
當我刪除的映射我沒有問題可以讀取訪問,但是當我插入一個新行到表中,我得到的消息
無法插入顯式值時間戳列。對列列表使用INSERT來排除時間戳列,或者將DEFAULT插入到時間戳列中。 PigTool.Entities.TblAnwendungsbelegposition:方法set_upsize_ts應該是'
當我改變到private set;
,我在初始BuildSessionFactory();
以下類型可能不被用作代理獲得消息公共/受保護的虛擬'或'受保護的內部虛擬'
當我從實體屬性中刪除時,我在i nitial BuildSessionFactory();
找不到屬性的設置「upsize_ts」類「PigTool.Entities.TblAnwendungsbelegposition」
有沒有人有一個想法,我怎麼能順利讀取包含這個只讀列行,而保留生成新行的能力?我不希望每個相關表都有兩個實體/映射,其中一個不包含日常工作的timestamp屬性,另一個包含它,但只用於閱讀。