2011-02-15 89 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