我想使用查询来给我一个对象
public class TaskMap : ClassMap<Task>
{
public TaskMap()
{
Table("Tasks");
Id(x => x.TaskId);
Map(x => x.TaskName).NvarcharWithMaxSize().Not.Nullable();
Map(x => x.Description).NvarcharWithMaxSize();
Map(x => x.DueDate).Not.Nullable();
HasMany(x => x.PersonalTaskReminders).Inverse();
HasMany(x => x.TaskReminders).Inverse();
References(x => x.Course).Not.Nullable();
HasMany(x => x.CompletedTasks);
}
}
[Serializable()]
public class Task
{
public virtual int TaskId { get; private set; }
public virtual string TaskName { get; set; }
public virtual string Description { get; set; }
public virtual DateTime DueDate { get; set; }
public virtual IList<PersonalTaskReminder> PersonalTaskReminders { …Run Code Online (Sandbox Code Playgroud) 假设我有2个表table1(a,b)和table2(c,a)
我需要做这样的事情,但是使用NHibernate标准:
select a,b, (select count(*) from table2 t2 where t1.a = t2.a ) x from table1 t1
Run Code Online (Sandbox Code Playgroud)
谁知道怎么做?
我有一个使用NHibernate使用Session.Query<T>方法的linq查询,我在这个查询中获取一些复杂的属性和集合属性.我想知道,如何IN从运算符中添加一个条件int[]?看看我的代码:
public IEnumerable<Product> GetProducts(int[] idCategories)
{
// how to add IN condition here or a subquery
var query = Session.Query<Product>()
.Where(?????)
.Fetch(x=>x.Category)
.FetchMany(x=>x.Status).ThenFetch(x=>x.Item);
return query.ToList();
}
Run Code Online (Sandbox Code Playgroud)
我有另一个方法做一个查询来获得这个int[],我想在这里应用它,或者如果有任何方法在IN运算符上添加这个子查询,我真的很感激!
OBS:如果必要,我可以转换int[]成List<int>.
我int[]通过以下查询得到了这个:
return session.Query<Category>.Where(...).Select(x => x.Id).ToArray();
Run Code Online (Sandbox Code Playgroud)
我的第二个问题是,如何将此查询作为子查询添加到按类别筛选?
谢谢!