我的NHibernate曲折之行

2021-09-06 19:12:30 字數 3738 閱讀 9327

之前,看過很多nhibernate的東西。特別是 yjinglee的nhibernate之旅系列比較經典。看得多了,但是還沒有真正的從頭到尾的做過一邊。今天從頭到尾做了一遍,發現問題還真多。我就將我做的過程和在這中間碰到的問題跟大家分享一下。也可以讓一些初學的朋友少走一些彎路,當然我碰到的很多問題在網上都能找到答案,我也就將一些需要注意點,和出錯的點收集一下,然後放到一起,節省大家時間去瘋狂google。大致過程參照yjinglee的nhibernate之旅(2):第乙個nhibernate程式

<?xml  version="1.0" encoding="utf-8"?>

<?xml  version="1.0" encoding="utf-8" ?>

這裡只是增加了資料庫鏈結字串,注意:這裡的connection string在nhibernate的配置檔案中要用到,所以要保持一致。這裡如果要將資料庫從mssql遷移到oracle,那麼我們只要將上面的注釋去掉,然後將下面這句mssql的注釋掉就可以了。

然後來看nhibernate的兩個配置檔案:nhibernatemssql.config和nhibernateoracle.config

>nhibernatemssql.config:

<?xml  version="1.0" encoding="utf-8" ?>

nhibernate.dialect.mssql2005dialect

nhibernate.connection.driverconnectionprovider

nhibernate.driver.sqlclientdriver

connection string

readcommitted

>nhibernateoracle.config

<?xml  version="1.0" encoding="utf-8" ?>

nhibernate.dialect.oracle10dialect

nhibernate.connection.driverconnectionprovider

nhibernate.driver.oracleclientdriver

connection string

readcommitted

using system;

using system.collections.generic;

using system.linq;

using system.text;

using nhibernate;

using model.entities;

//using nhibernate.cfg;

namespace dal 

}public getstudent(isession session) 

public student getstudentbyid(int studentid) }}

form.cs **:

the following types may not be used as proxies:

model.entities.course:method get_isdeleted should be 'public/protected virtual' or 'protected internal virtual'

model.entities.course: method set_isdeleted should be 'public/protected virtual' or 'protected internal virtual'

model.entities.course: method get_ischanged should be 'public/protected virtual' or 'protected internal virtual'

model.entities.course: method set_ischanged should be 'public/protected virtual' or 'protected internal virtual'

model.entities.course: method clone should be 'public/protected virtual' or 'protected internal virtual'

model.entities.studentcourse: method get_isdeleted should be 'public/protected virtual' or 'protected internal virtual'

model.entities.studentcourse: method set_isdeleted should be 'public/protected virtual' or 'protected internal virtual'

model.entities.studentcourse: method get_ischanged should be 'public/protected virtual' or 'protected internal virtual'

model.entities.studentcourse: method set_ischanged should be 'public/protected virtual' or 'protected internal virtual'

model.entities.studentcourse: method clone should be 'public/protected virtual' or 'protected internal virtual'

model.entities.student: method get_isdeleted should be 'public/protected virtual' or 'protected internal virtual'

model.entities.student: method set_isdeleted should be 'public/protected virtual' or 'protected internal virtual'

model.entities.student: method get_ischanged should be 'public/protected virtual' or 'protected internal virtual'

model.entities.student: method set_ischanged should be 'public/protected virtual' or 'protected internal virtual'

model.entities.student: method clone should be 'public/protected virtual' or 'protected internal virtual'

這個就是在老趙今天發的我對nhibernate的感受(2):何必到處都virtual

的提到的到處都是virtual了,在mygeneration生成的對映檔案中,有些方法並不是virtural的,所以會出現編譯通過,但是執行出錯的情況。

解決方案,當然是在每個方法和屬性上面加上virtual了。

處理完這個錯誤,當然還是沒有那麼順利就過關啦,第三個錯誤依舊報來!

這也就是需要注意的另外一點:在2.1版本中的nhibernate中需要在nhibernate配置檔案中加入

nhibernate.bytecode.castle.proxyfactoryfactory, nhibernate.bytecode.castle

曲折的解決VirtualBox網絡卡消失之路

我的心很大。乾脆刪除了底下所有的項,並且,沒有備份登錄檔。滿心歡喜重啟電腦後,傻眼了,無線有線網路都沒有了?彷彿末日末日來臨一般,覺得電腦同這個世界斷了聯絡。首先趕緊usb接上手機,usb共享網路,網路上尋找答案。公升級驅動 解除安裝虛擬機器軟體 禁用虛擬網絡卡 登錄檔修復軟體 嘗試找到window...

十三 NHibernate之物件狀態

引入 在程式執行過程中使用物件的方式對資料庫進行操作,這必然會產生一系列的持久化類的例項物件。這些物件可能是剛剛建立並準備儲存的,也可能是從資料庫中查詢的,為了區分這些物件,根據物件和當前會話的關聯狀態,我們可以把物件分為三種 1.瞬時物件 物件剛剛建立。該物件在資料庫中沒有記錄,也不在 isess...

曲折的軟考經歷 2

接上篇.第四階段 轉戰gct 工程碩士 10月5日 11月1日 當軟考看到10月5日的時候還有一部分的章節沒有看完,新的任務來臨 gct研究生考試,gct也就是工程碩士算是一種新鮮的事物吧,軟體工程師可以從一些方面表現出工程能力,而工程碩士是從學歷上的一種體現.十月初自己初步預計是讓軟考和gct同時...