У меня есть этот класс
public class MyClass
{
public int Id { get; set;}
public string Name { get; set; }
public IList<MyClass> Classes { get; set; }
}
Я использую Fluent NHibernate, и у меня есть AutoMappingOverride:
public void Override(AutoMapping<MyClass> mapping)
{
mapping.HasManyToMany(m => m.Classes)
.ParentKeyColumn("ClassId")
.ChildKeyColumn("SecondClassId")
.Table("ClassesRelation")
.Cascade.SaveUpdate();
}
И у меня есть этот метод в моем хранилище:
public IList<MyClass> ClassesThatContains(MyClass @class)
{
//allClasses.Where(tempClass => tempClass.Classes.Contains(@class))
string query = string.Format(@"SELECT Class.* FROM Class WHERE Class.Id IN (SELECT ClassesRelation.ClassId FROM ClassesRelation WHERE ClassesRelation.SecondClassId = {0})", @class.Id);
var criteria = NhSession.CreateSQLQuery(query).AddEntity(typeof(MyClass));
return criteria.List<MyClass>();
}
В методе ClassesThatContains у меня есть комментарий, эквивалентный оператору SQL, но NHibernate не знает Содержит метод Linq .... Поэтому я использовал оператор SQL, но как я могу преобразовать этот оператор SQL в критерии как?
Obs: ClassRelation не является классом.