0
我可能會有可能映射錯誤,或者什麼,NHibernate似乎讓我感到困惑,但是當它工作時它很流暢。我已經谷歌的一切,我仍然在學習NHibernate。我正在嘗試查詢具有accountId的地址,該地址鏈接到我的AccountUser地圖,該地圖具有可鏈接到我的用戶地圖的userId。我想用「joe」的用戶名查找所有的地址。任何人都知道我會如何處理我的查詢?下面是我的地圖,以及查詢:C#NHibernate加入問題
public AddressMap()
{
Table("Address");
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.FirstName);
Map(x => x.MiddleName);
Map(x => x.LastName);
Map(x => x.CompanyName);
Map(x => x.Street);
Map(x => x.City);
Map(x => x.State);
Map(x => x.AccountID);
Map(x => x.Name);
References(x => x.AccountUser);
}
public class AccountUserMap: ClassMap<AccountUser>
{
public AccountUserMap()
{
Table("AccountUser");
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.UserId);
Map(x => x.AccountID).Not.Nullable();
References(x => x.User);
}
}
public UserMap()
{
Table("User");
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Name);
}
// non working query:
Address address = null;
User user = null;
AccountUser accountUser = null;
var query = session.QueryOver<Address>(() => address)
.JoinQueryOver(x => x.AccountUser,() => accountUser)
.Where(() => accountUser.AccountID == address.AccountID)
.JoinQueryOver(y => y.User,() => user)
.Where(() => user.Id == accountUser.UserId)
.And(() => user.Name == "joe")
.List()).ToList();
錯誤消息是不是非常有幫助要麼...
{「無效的列名稱AccountUser_id'\ r \ n無效的列名 」。 USER_ID」 \ r \ n無效的列名 'AccountUser_id'。\ r \ n無效列 名 'USER_ID'。「}
有什麼用下劃線命名,所以它必須有一些與NHibernate
此外,下面的作品該SQL查詢,而這也正是我想做的事:
SELECT TOP 1000
[AddressID]
,[FirstName]
,[MiddleName]
,[LastName]
FROM Address
inner join AccountUser accountUser
on AccountUser.AccountID = Address.AccountID
inner join User user
on user.UserID = accountUser.UserID
where user.Name= 'joe'
希望這就是足夠的細節