12
NHibenate ile ilgili bir sorunum var. Sorguyu çalıştırdığımda, "özniteliğini çözemedim" hata mesajı alıyorum: User.Name: MegaOnlineChat.Core.Entities.Message ".Ne yapmam yanlış?nhibernate, özellikleri çözemedi
varlık
public class EntityObject<TId>
{
public virtual Int32 Id { get; set; }
}
public class User:EntityObject<Int32>
{
public virtual String Name { get; set; }
public virtual String Password { get; set; }
public virtual Boolean Admin { get; set; }
public virtual IList<Message> Messages { get; set; }
}
public class Message:EntityObject<Int32>
{
public virtual String Text { get; set; }
public virtual User User { get; set; }
public virtual DateTime Date{ get; set; }
}
haritalama
public class UserMapping:ClassMap<User>
{
public UserMapping()
{
Table("Users");
Id(m => m.Id).GeneratedBy.Native();
Map(m => m.Name).Unique().Not.Nullable();
Map(m => m.Admin).Not.Nullable();
Map(m => m.Password).Not.Nullable();
HasMany(m => m.Messages).KeyColumn("User_id");
}
}
public class MessageMapping:ClassMap<Message>
{
public MessageMapping()
{
Table("Messages");
Id(m => m.Id).GeneratedBy.Native();
Map(m => m.Text).Not.Nullable();
Map(m => m.Date).Not.Nullable();
References(m => m.User, "User_id").Not.Nullable();
}
}
QueryOver
NHibernateSession.QueryOver<Message>().Where(x => x.User.Name == name).List<Message>().Last();
Eğer 'Message' ek' .Where() 'maddelerini yapmak istiyorsanız bunu yapmanın bir yolu var mı? –
Linq sağlayıcısını kullanıyorsanız, şu gibi bir şey yapabilirsiniz: session.Query() .Where (x => ...). Nerede (x => ..) vb. QueryOver'ı kullanıyorsanız, sorguyu düzenlerken 1 bağlaçına (AND) girdiğinizde, .and (..) yöntemini kullanarak –
Ah, bunu çözdüm. [.JoinAlias] 'ı arıyordum (http://stackoverflow.com/questions/21322363/nhibernate-cannot-resolve-property-of-one-to-one-mapping-when-used-in-a-filter/21323504 # 21323504) –