我正在使用某人的Sql Server數據庫和Fluent NHibernate映射模型,我使用(我自己的)SQLite數據庫進行測試。GUID連接到Sqlite UniqueIdentifier在NHibernate導致查詢錯誤
一個表被稱爲「島」,並且包含「TradId」列是一個GUID型等被聲明爲
public virtual Guid TradId { get; set; }
和映射:
Id(x => x.TradId).Column("TradID").GeneratedBy.Assigned();
用於測試的目的在我的SqlLite數據庫中,它使用我認爲映射到字符串的「UniqueIdentifier」類型進行聲明。
TradID UNIQUEIDENTIFIER NOT NULL collate nocase,
一般來說,這工作得很好,當任何企圖通過製造NHibernate的通過ID值,連接到子記錄時出現去取時除外。
NHibernate的吐出:
[...] WHERE this_.TradID = @p0;@p0 = ac3e30ff-e767-440f-ab1f-0000293c5a0c [Type: Guid (0)]
但是,這是行不通的,因爲我覺得它需要作爲字符串來處理。 有什麼我應該做的與Sqlite連接映射這不同?還是有什麼我失蹤?
============================================== ==========================
其他信息
我有這個代碼單元測試:
var session = this.openSession;
var trad = session.Query<Trad>()
.FetchMany(x => x.TradInventeringList)
.ToList()[0];
var surveys = session.Query<TradInventering>()
.Where(x => x.Trad.TradId == trad.TradId)
.ToList();
Assert.Greater(surveys.Count, 0);
如果我有一個會話連接到我的SqlServer(活)數據庫,但對我的Sqlite數據庫失敗,則運行此代碼。
我在想如果我需要添加一個基於IPropertyConvention的約定到我的流利。配置。
UUID值已經在數據庫中,所以我不需要生成它。 我的問題是如何讓NHibernate知道在連接到Sqlite數據庫而不是Sql Server時將GUID字段作爲字符串處理。 – 2014-10-06 09:32:22
這不就是我回答的嗎? uuid.string將GUID視爲字符串。 – 2014-10-06 10:00:06
那麼我不知道你怎麼想我會用uuid.string來解決我的問題。你能再給我多一點繼續嗎? – 2014-10-06 13:19:45