Фотографии объекта принадлежат объекту недвижимости, и одно свойство может иметь много фотографий.Картография в порядке, создание данных идет хорошо.В БД хранятся мои фотографии, например: Идентификатор 1: двоичные данные PropertyId (100) и статья Свойства с идентификатором 100 имеют ссылки на многие фотографии.Я пишу все это, чтобы сказать, что мое создание данных в порядке и отображение также.
Итак, проблема заключается в загрузке коллекции фотографий при отображении сведений о свойствах.Мне нужно загрузить коллекцию фотографий внутри сессии, поэтому я застрял здесь.
public ActionResult Details(int id)
{
MyDomain.Property data = null;
using (//session)
{
using (//transaction)
{
data = session.QueryOver<MyDomain.Property>()
.Where(x => x.Id == id)
.Fetch(x => x.Photos).Eager //empty
.Fetch(x => x.Features).Eager
.SingleOrDefault<MyDomain.Property>();
//I was thinking here to call
// data.Photos = GetMyPhotos(id);
tx.Commit();
return PartialView("_HomePageDetailsPartial", data);
}
}
//return PartialView("_HomePageDetailsPartial", data);
}
Как вы можете видеть в этом, я попытался с данными .Photos = GetMyPhotos (id);но при отладке у меня появляется сообщение об ошибке Невозможно обновить столбец идентификаторов «Id».
Невозможно обновить столбец идентификаторов «Id».Я убежден, что даже в этой работе есть более элегантный способ получения коллекции фотографий для определенного свойства.
Мои сопоставления
public class PhotoMap : ClassMap<Photo>
{
public PhotoMap()
{
Table("Photo");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.ImageData).CustomSqlType("VARBINARY(MAX)").Length(160000).Not.Nullable();
Map(x => x.ImageMimeType).Not.Nullable();
References(x => x.Property).Column("PropertyId");
}
}
public class PropertyMap : ClassMap<Property>
{
public PropertyMap()
{
Table("Property");
Id(x => x.Id).GeneratedBy.Identity();
...
References(x => x.Features, "FeaturesId");
HasMany(x => x.Photos).KeyColumn("Id").Cascade.All();
}
}
Снимок БД Две таблицы, Свойство и Фото.
Id int not null
Title nvarchar(255) not null
PhotoId int not null
Таблица фотографий
Id int not null
ImageData varbinary(MAX) null
ImageMimeType varchar(50) null
PropertyId int not null
Отношения таковы:
FK_Property_Photo
Primary Key table Foreign key table
--------------------------------------------
Photo Property
--------------------------------------------
Id PhotoId