Я получаю ошибку
Несанкционированный доступ к загружающемуся набору
когда я пытаюсь получить список вариантов, принадлежащих определенному продукту. Отображение NHibernate как ниже
<list name="Variants" lazy="false" cascade="save-update" inverse="false" table="PluginProduct_ProductVariant">
<key column="ProductId" />
<index column="Ordinal" />
<one-to-many class="Plugin.Product.Business.Entities.Variant, Plugin.Product" />
</list>
Я уже попытался рискнуть ленью и обратными свойствами, как предложено в других темах на этом сайте, но они не добивались цели.
Я использую NHibernate в сочетании с ASP.NET MVC и и я пытаюсь циклично выполниться через набор варианта, по моему мнению. Представление называет следующий метод
public ActionResult ShowProduct()
{
var id = new Guid(PluginData.PageParameters["Id"]);
var variant = _variantService.GetVariantById(id);
var product = variant.Product;
return PluginView("ShowProduct.ascx", product);
}
Вышеупомянутый код работает без любых проблем. Но когда я отлаживаю прежде, чем возвратить представление, я вижу, что список вариантов, которые содержит продукт, пуст. Когда я открываю более подробную отладочную информацию, она показывает мне ошибку набора.
В представлении моего веб-приложения я пытаюсь сделать следующее
<%
foreach (var variant in Model.Variants)
{%>
kleur: <%= variant.Color %>
van: <%= variant.FromPrice %> voor: <%= variant.Price %>
<%} %>
Ладно, очень глупо, но я наконец-то решил проблему.
Индексный столбец Ordinal
в базе данных не получал правильных значений, поэтому он всегда был NULL
. Это вызывало ошибку, потому что NHibernate не мог найти индексный столбец для создания списка.
К сожалению, это стоило мне много времени, но я рад, что решил эту проблему!
Проблема решена! Я столкнулся с другой проблемой при добавлении продукта с вариантом, поэтому я изменил этот интеллект в своем контроллере. Затем у меня возникла проблема с отображением, поэтому я изменил отображение, как показано ниже, и все сработало!
<list name="Variants" lazy="false" cascade="all" inverse="false">
<key column="ProductId" />
<index column="Ordinal" />
<one-to-many class="Plugin.Product.Business.Entities.Variant, Plugin.Product" />
</list>