我有一个问题(很明显:)) 是否有可能以这种方式在nHibernate中进行动态查询... 我有很多表(让我们说:User,City,Country,Continet,...)是否可以展示这些数据,因此我不需要知道这些表之间的连接(为用户获取大陆,而无需加入用户。 city,city.country,coutry.continent)?
关键是我想要某种扁平数据,这样用户可以在不知道应用背后的数据模型的情况下动态选择用户界面上的数据吗?
如果有人至少知道如何制作这个,或者如果可能的话,那会很棒......
网络上的一个示例是GoogleAnalytics自定义报告(您可以在UI上拖动维度和指标并获得结果)
答案 0 :(得分:0)
你说你正在使用Fluent NHibernate,这意味着,假设你的域模型结构正确,你不需要使用任何连接。
“展平”数据是一个UI问题,而不是数据库问题,所以除非你绝对必须,否则你不应该展平你的数据模型或简化它。
假设您有以下实体:
public class User
{
public virtual string Name { get; set; }
public virtual City City { get; set; }
}
public class City
{
public virtual string Name { get; set; }
public virtual Country { get; set; }
}
public class Country
{
public virtual string Name { get; set; }
}
如果您想按特定国家/地区过滤用户,则LINQ查询(假设NHibernate 3)将为:
var country = session.Single<Country>(x => x.Name == "Africa");
session.Query<User>().Where(x => x.City.Country == country);