2011-02-15 90 views
0

我有一个问题(当然:)) 是否有可能使动态查询NHibernate的那样...... 我有很多表(让我们说:用户,城市,国家,Continet,...)是否有可能使这些数据成为可能,因此我不需要知道这些表格之间的连接(获取用户大陆,而无需连接user.city,city.country,coutry.continent)?功能NHibernate某种平表

重点是我想要某种平坦的数据,所以用户可以动态选择用户界面上的数据,而无需知道应用程序后面的数据模型?

这将是伟大的,有人给了我至少知道如何使这个,或者如果可能的话......在网络

一个例子是Google分析自定义报告(你可以拖动UI维度和指标,并得到结果)

回答

0

你说你使用流利NHibernate,这意味着,假设你的域模型结构正确,你不需要使用任何连接。

“拼合”数据是UI关注的问题,而不是数据库关心的问题,因此,除非您绝对必须,否则不应该将数据模型扁平化或简化为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); 
+0

是,这很简单,但有更多的表我不能预测什么实体将用户选择... 它可能是城市,国家,大陆,用户... 这意味着由(城市,国家,大陆,用户,...) 好的,我需要添加一个表“访问” 我想知道“动态”来自国家,城市,或者continet,或者用户的访问次数,或者可能是产品的数量... – freska 2011-02-15 19:36:50