Ответ 1
Я нашел решение!: -)
var qOver = _HibSession.QueryOver<MyModel>(() => baseModel)
.JoinAlias(() => baseModel.Submodels, () => subModels)
.WhereRestrictionOn(() => subModels.ID).IsIn(IDsSubModels)
.List<MyModel>();
Я бы создал QueryOver вроде этого
SELECT *
FROM Table
WHERE Field IN (1,2,3,4,5)
Я пробовал с помощью метода Contains
, но я столкнулся с Exception
"System.Exception: вызов нераспознанного метода: System.String: Boolean Contains (System.String)"
Здесь мой код
var qOver = _HibSession.QueryOver<MyModel>(() => baseModel)
.JoinAlias(() => baseModel.Submodels, () => subModels)
.Where(() => subModels.ID.Contains(IDsSubModels))
.List<MyModel>();
Я нашел решение!: -)
var qOver = _HibSession.QueryOver<MyModel>(() => baseModel)
.JoinAlias(() => baseModel.Submodels, () => subModels)
.WhereRestrictionOn(() => subModels.ID).IsIn(IDsSubModels)
.List<MyModel>();
Вы можете попробовать что-то вроде этого:
// if IDsSubModels - array of IDs
var qOver = _HibSession.QueryOver<MyModel>()
.Where(x => x.ID.IsIn(IDsSubModels))
Вам не требуется соединение в этой ситуации
Это работает и более элегантно
var Strings = new List<string> { "string1", "string2" };
var value = _currentSession
.QueryOver<T>()
.Where(x => x.TProperty == value)
.And(Restrictions.On<T>(y=>y.TProperty).IsIn(Strings))
.OrderBy(x => x.TProperty).Desc.SingleOrDefault();
where T is a Class and TProperty is a property of T