2
私はすべての参照エンティティを取得する必要がありますテーブルの塗りつぶしクエリがあります。Linq to Nhibernate strange behavior
私が持っているクライアント:
public class Client
{
public virtual int Id { get; set; }
public virtual ICollection<Address> Addresses { get; protected set; }
public virtual Address CurrentAddress { get; set; }
}
住所
public class Address
{
public virtual int Id { get; set; }
public virtual string Address1 { get; set; }
public virtual string City { get; set; }
public virtual string ZipCode { get; set; }
}
とDB図:
:私はNHibernateのにLINQのすべてのユーザーのアドレスを取得したいです
ClientRepository.Where(x => x.Id == clientId).SelectMany(c => c.Addresses).Where(x => x.Address1.Contains("Comp")).ToList();
しかし、私はこのクエリなった:EDITED
SELECT TOP (20 /* @p0 */) Id31_,
Address2_31_,
Address3_31_,
City31_,
ZipCode31_
FROM (select address2_.Id as Id31_,
address2_.Address1 as Address2_31_,
address2_.Address2 as Address3_31_,
address2_.City as City31_,
address2_.ZipCode as ZipCode31_,
ROW_NUMBER() OVER(ORDER BY address2_.Address1) as __hibernate_sort_row
from CLIENTS client0_
inner join AddressToClient addresshis1_
on client0_.Id = addresshis1_.ClientId
inner join ADDRESSES address2_
on addresshis1_.AddressId = address2_.Id
where address2_.Id = 2 /* @p1 */) as query
WHERE query.__hibernate_sort_row > 0 /* @p2 */
ORDER BY query.__hibernate_sort_row
をマイリポジトリ:
/// <summary>
/// Gets the repository query.
/// </summary>
/// <value>The repository query.</value>
protected override IQueryable<Client> RepositoryQuery
{
get
{
return Session.Query<Client>();
}
}
クエリフィルタid = address2_.Id
ないクライアントIDで。
なぜ検索はアドレスではなくクライアントのIDで表示されるのですか?
あなたの 'ClientRepository'を見せてください。たぶん何か間違っています。 – NOtherDev
私はクライアントリポジトリを追加しました。 –