1
こんにちは、テーブル間の結合を実行したいのですが、できません。今これは私が人からLoginAccountの値を取得しようとしたものです何MVC3でnhibernateを使用して結合を実行する方法
public class Person
{
public virtual LoginAccount LoginAccount { get; set; }
}
public class LoginAccount
{
//fields of LoginAccount
}
人
のマッピングファイル<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly ="HobbyHomes" namespace ="HobbyHomes.Model" >
<class name ="Person">
<composite-id class="HobbyHomes.Model.LoginAccount" name="LoginAccount">
<key-property name="LoginAccountID">
<column name="LoginAccountID"></column>
</key-property>
</composite-id>
//other properties
</class>
:ここ
は私のクラスである
public IList<Person> FetchPerson(ICollection<Learner> learner)
{
log.Debug("Started");
ISession session = DataAccessLayerHelper.OpenReaderSession();
IList<Person> person = null;
ITransaction transaction = null;
Disjunction dj = new Disjunction();
try
{
transaction = session.BeginTransaction();
person = session.CreateCriteria(typeof(Person), "person")
.CreateCriteria("person.LoginAccount", "LoginAccount", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.List<Person>();
transaction.Commit();
}
catch (Exception ex)
{
if (transaction != null && transaction.IsActive)
transaction.Rollback();
log.Error(ex);
}
finally
{
if (transaction != null)
transaction.Dispose();
if (session != null && session.IsConnected)
session.Close();
}
log.Debug("End");
return person;
}
これで私はLoginAccountクラスのフィールドではなく、Personクラスのフィールドしか取得できません。私を助けてください。
です。 http://nhforge.org/blogs/nhibernate/archive/2008/10/05/querying-with-nhibernate.aspx –
私は個人的にQueryOver APIを使用しています。あなたはそれを見てみたいと思う。それは時間を節約するかもしれません。 –