У меня есть хранимая процедура SQL Server, которую я выполняю, используя строку запроса, которая возвращает таблицу со следующими столбцами (ItemNumber, ItemDescription, UPC, Price, Count), представляющая количество магазинов, которые Товар имеет цену. Таким образом, элемент A равен 1,00 при 50 магазинах и 2,00 в 55 магазинах.Проблемы с отображением компонентов в среде NHibernate
Вот код для выполнения Выборки:
private IEnumerable<RetailPrice> FetchRetailPrices(IUnitOfWork unitOfWork, string upc)
{
string StoredProcedure = "EXEC RetailPrices @UPC = :upc";
List<Parameter> parameters = new List<Parameter>
{
new Parameter("upc", upc)
};
return unitOfWork.GetRepository<RetailPrice>().Fetch(
StoredProcedure, parameters);
}
Вот мои объекты Я пытаюсь отобразить с помощью Fluent NHibernate:
namespace Report.Entities
{
[Serializable]
public class Item
{
public virtual string Upc { get; protected internal set; }
public virtual int ItemNumber { get; protected internal set; }
public virtual string ItemDescription { get; protected internal set; }
}
}
namespace Report.Entities
{
[Serializable]
public class RetailPrice
{
public virtual Item ItemDetails { get; protected internal set; }
public virtual decimal Price { get; protected internal set; }
public virtual int Count { get; protected internal set; }
}
}
Вот моя карта:
namespace Report.Mappings
{
public class RetailPriceMap : ClassMap<RetailPrice>
{
public RetailPriceMap()
{
Id(a => a.Price).Column("Price");
Map(a => a.Count).Column("Count");
Component(a => a.ItemDetails, b =>
{
b.Map(c => c.ItemNumber).Column("ItemNumber");
b.Map(c => c.ItemDescription).Column("ItemDescription");
b.Map(c => c.Upc).Column("UPC");
});
}
}
}
Прямо сейчас я просто делаю это для одного предмета за одну цену, и я получаю PropertyNotFoundException: не могу t найти сеттер для свойства «ItemNumber» в классе «Report.Entities.RetailPrice».
Почему код пытается загрузить это на объект RetailPrice вместо объекта Item? Имеет ли это какое-либо отношение к запуску хранимой процедуры в качестве запроса Fetch?
Как только я получу это решение, как я могу сделать создание элемента Item.Upc идентификатора на RetailPriceMap?
Когда вы получаете 'RetailPrice' без использования хранимой процедуры, делает все работает правильно (т.е. с использованием' session.Get (...) ') –
я делаю что-то подобное основанный на прямых сопоставлениях таблиц, и это отлично работает. –
Что делает метод 'Fetch'? –