Benimkine benzer bir düzine soru buldum ama bunların hiçbiri benim sorunuma bir çözüm önermedi. nhibernate, özelliği çözemedi QueryOver sadece bir tablo
.... ben bu sınıfıpublic class User : IEntity
{
private int id;
public virtual int Id { get { return id; } }
private string email;
public virtual string Email
{
get { return email; }
//private set { email = value; }
}
private string password;
public virtual string Password
{
get { return password; }
//private set { password = value; }
}
private bool isActive;
public virtual bool IsActive
{
get { return isActive; }
//private set { isActive = value; }
}
private bool isRegistered;
public virtual bool IsRegistered
{
get { return isRegistered; }
//private set { isRegistered = value; }
}
private bool hasRequestedApplication;
public virtual bool HasRequestedApplication
{
get { return hasRequestedApplication; }
//private set { hasRequestedApplication = value; }
}
private ContactInfo contactInformation;
public virtual ContactInfo ContactInformation
{
get { return contactInformation; }
//private set { contactInformation = value; }
}
public User(string email)
{
this.email = email;
}
public User(string email, string password):this(email)
{
this.password = password;
}
public User()
{ }
}
bu haritalama olduğunu var
Tamam önceden
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain"
namespace="Domain.User" default-access="field">
<class name="User" table="[User]">
<id name="id" column="UserID">
<generator class="identity" />
</id>
<property name="email" column="Email" not-null="true"></property>
<property name="password" column="HashedPassword" not-null="false"></property>
<property name="isRegistered" column="IsRegistered" not-null="true"></property>
<property name="isActive" column="IsActive" not-null="true"></property>
<property name="hasRequestedApplication" column="HasRequestedApplication" not-null="true"></property>
<one-to-one name="contactInformation" class="Domain.User.ContactInfo"/>
</class>
</hibernate-mapping>
teşekkür ederiz ve bu i buyum çağıran
public class UserRepository: IUserRepository
{
Func<ISession> session;
public UserRepository(Func<ISession> _session)
{
session = _session;
}
[Transaction]
public User FindByEmail(string emailAddress)
{
using (var tx = session())
{
return tx.QueryOver<User>().Where(u => u.Email == emailAddress).SingleOrDefault();
}
}
}
Hata ... { "özelliğini çözemedi: ait Email: Domain.User.User"}
stacktrace ...
NHibernate.Persister.Entity.AbstractPropertyMapping.ToType de (String NHibernate.Persister.Entity.AbstractEntityPersister.ToColumns de NHibernate.Persister.Entity.BasicEntityPropertyMapping.ToColumns de NHibernate.Persister.Entity.AbstractEntityPersister.GetSubclassPropertyTableNumber (string propertyPath) de propertyName) (string takma, dize propertyName) (string takma, String propertyName) at NHibernate.Criterion.CriterionUtil.GetColumnNamesUsingPropertyName de NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetColumns (ICriteria-kriterler, dize propertyName) NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetColumnsUsingProjection de (ICriteria alt-kriter, dize propertyName) (ICriteriaQuery criteriaQuery, ICriteria kriterleri, NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor de NHibernate.Criterion.SimpleExpression.ToSqlString de dize propertyName, nesne değeri, ICriterion critertion) (ICriteria kriterleri, ICriteriaQuery criteriaQuery ıdictionary 2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary
2 enabledFilters) (IOuterJoinLoadable persister, CriteriaQueryTranslator çevirmen, ISessionFactoryImplementor fabrika, ICriteria ölçütleri, String rootEntityName, IDictionary 2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary
2 enabledFilters) NHIB'de rnate.Impl.SessionImpl.List (CriteriaImpl kriterleri, ılist sonuçlar) NHibernate.Impl.CriteriaImpl.List (ılist sonuçlar) NHibernate.Criterion.QueryOver 1.SingleOrDefault() at NHibernate.Criterion.QueryOver
1.NHibernate.IQueryOver de NHibernate.Impl.CriteriaImpl.UniqueResultT de . E DataObjects.NHibernate.UserRepository.FindByEmail (string emailAddress) de SingleOrDefault() : Castle.Proxies.Invocations.IUserRepository_FindByEmail.InvokeMethodOnTarget (hat 26 ) Castle.DynamicProxy de: \ Projeler \ DataObjects.NHibernate UserRepository.cs \ .AbstractInvocation.Proceed() Castle.Facilities.AutoTx.TransactionInterceptor.SynchronizedCase (IInvocation çağırma, ITransaction işlemi) d: \ BuildAgent-03 \ work \ 9844bdf039249947 \ src \ Castle.Facilities.AutoTx \ TransactionInterceptor.cs: line 137
DÜZENLEME:
Tamam. Bir ölçüde çözüldü. Haritalarımdaki tüm özellikleri ve bileşen isimlerini sermayeye değiştirdim. Yerine ...
<property name="email" column="emailaddress" />
seti o kadar ... ve çalışır. Şimdi, NHibernate'in mülklerimi alanlarımla doldurduğunu/okuduğunu garanti ediyor mu? Umarım.
Merhaba Radim, Ben de öyle yaptım. İyi çalışıyor. Teşekkürler –