Tôi đã đọc rất nhiều câu hỏi về lỗi tương tự nhưng không có gì kể từ khi khớp với vấn đề chính xác của tôi. Tôi đang cố gắng truy cập vào tài sản của một đối tượng, chính nó là một phần của một đối tượng gốc, sử dụng Fluent NHibernate. Một số câu trả lời nói rằng tôi cần phải sử dụng dự, những người khác mà tôi cần phải sử dụng tham gia, và tôi nghĩ rằng nó nên làm việc thông qua tải lười biếng.Fluent NHibernate "Không thể giải quyết thuộc tính"
Dưới đây là hai lớp học của tôi cùng với các ánh xạ thạo:
lớp Artist
lớppublic class Artist
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Album> Albums { get; set; }
public virtual string MusicBrainzId { get; set; }
public virtual string TheAudioDbId { get; set; }
public Artist() { }
}
public class ArtistMap : ClassMap<Artist>
{
public ArtistMap()
{
LazyLoad();
Id(a => a.Id);
Map(a => a.Name).Index("Name");
HasMany(a => a.Albums)
.Cascade.All();
Map(a => a.MusicBrainzId);
Map(a => a.TheAudioDbId);
}
}
Album
public class Album
{
public virtual int Id { get; set; }
public virtual Artist Artist { get; set; }
public virtual string Name { get; set; }
public virtual IList<Track> Tracks { get; set; }
public virtual DateTime ReleaseDate { get; set; }
public virtual string TheAudioDbId { get; set; }
public virtual string MusicBrainzId { get; set; }
public Album() { }
}
public class AlbumMap : ClassMap<Album>
{
public AlbumMap()
{
LazyLoad();
Id(a => a.Id);
References(a => a.Artist)
.Cascade.All();
Map(a => a.Name).Index("Name");
HasMany(a => a.Tracks)
.Cascade.All();
Map(a => a.ReleaseDate);
Map(a => a.TheAudioDbId);
Map(a => a.MusicBrainzId);
}
}
Và các lỗi xảy ra khi mã này được giải thích :
var riAlbum = session.QueryOver<Album>()
.Where(x => x.Name == albumName && x.Artist.Name == artist)
.List().FirstOrDefault();
Lỗi xảy ra khi thành thạo NHibernate cố gắng giải quyết các giá trị x.Artist.Name:
{ "không thể giải quyết bất động sản: Artist.Name của: Album"}
gì sẽ là cách chính xác để làm điều này?
Điều đó hoạt động hoàn hảo. Cảm ơn bạn đã giải thích lý do đằng sau quá! – Astaar
khám phá tuyệt vời! –