Привет всем Мне нужно несколько идей, как исправить порядок по элементу карты с элементами с нулевым значением.nhibernate map item order issue
Я пытаюсь сделать сортировку
IQueryable<Device> q;
q = from d in q
orderby d.Attributes[1]
orderby d.Name
select d; //<-- return only devices where device_attrib_value (d.Attributes[1])
//not null
Проблема в результате запроса его не возвращают элементы без device_attrib_value.If смотреть вниз вы можете увидеть SQL я думаю, что это неправильно becouse должно быть некоторое выражение объединения.
Вопрос: Как я могу изменить выражение или отображение linq, чтобы обеспечить хорошую сортировку атрибутов? Мне это нужно для динамических колонок в моей сетке с сортировкой и фильтрацией
Цените любую помощь или идеи!
Database
Mapping файл
< class name="Device" table="DEVICES" lazy="false">
<id name="Id">
<column name="ID" />
<generator class="native" />
</id>
<property name="Name" column="NAME"/>
<map name="Attributes" table="DEVICE_ATTRIB_VALUES">
<key column="DEVICE_ID" not-null="true"/>
<index column="ATTRIB_ID" type="System.Int64" />
<element column="VALUE" type="System.String"/>
</map>
</class>
Класс сущностей Устройство
public class Device
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual IDictionary<long, string> Attributes { get; set; }
}
Sql порождена NHibernate
select
device0_.ID as ID1_,
device0_.NAME as NAME1_
from
DEVICES device0_,
DEVICE_ATTRIB_VALUES attributes1_
where
device0_.ID=attributes1_.DEVICE_ID
and attributes1_.ATTRIB_ID = @p0
order by
attributes1_.VALUE asc,
device0_.NAME asc;
привет спасибо за ответ, но мне нужно вернуть IQueryable q. –
, если включить d.Attributes в списке выбора, q будет формировать оператор sql, который включает столбцы в DEVICE_ATTRIB_VALUES, которые вам нужны для сортировки и подкачки и фильтрации. –
Ваш код даже не компилируется –