2013-04-20 46 views
0

看看下面的UI:如何存儲層次結構實體框架

ui mockup

我允許用戶,誰擁有某種類型的汽車用品店,選擇什麼類型的服務他的店提供。我的層次結構有5個層次,總共有數千個條目。選擇(檢查)任何技能區域會自動選擇所有子區域或子區域。每個區域都有其爲頂級的樣子10000,下一級11000等的ID ...

我的問題:

  1. 我怎樣才能實現與一個代碼庫這個UI支持移動,平板電腦和桌面界面?
  2. 我怎麼能代表使用實體框架填充層次結構以及存儲用戶的選擇層次?

中的應用是在ASP.Net MVC 4使用SimpleMembership。

回答

0
  1. 讓一個代碼庫支持多種平臺的最佳方式是使用ASP.NET MVC 4 WebAPI(JSON或XML)作爲REST Web服務。你可以找到更多關於它在這裏:http://www.asp.net/web-api

也有一對夫婦準備使用的解析器的反序列化在客戶端的JSON/XML數據轉換成C#對象。

第二個問題似乎更關係到實體框架抽象背後的數據庫架構。對於EF來說,組織數據的最好方法是使類別引用其他類別,而最後一類引用實際服務。你是否熟悉數據庫關係,外鍵等概念?

編輯:

public class Category1{ 
    public string Name { get; set; } 

    public virtual ICollection<Item> Items { get; set; } 
} 

public class Category2{ 
    public string Name { get; set; } 

    public Category1 ParentCategory { get; set; } 

    public virtual ICollection<Item> Items { get; set; } 
} 

public class Item{ 
    public string Name { get; set; } 
    public decimal Price { get; set; } 
} 

這是你會如何編寫代碼優先的EntityFramework對象的例子。 Category2有一個類型爲Category1的父項,並且這兩個類別都包含項目集合。 Pluralsight首先在EF代碼上有一個excellent course,涵蓋了所有的基礎知識。

+0

是的,但我希望英孚已經無需顯式定義表結構在「代碼優先」方式構成這種分級數據結構的一種特殊方式。 – Infin8Loop 2013-04-20 22:32:43

+0

恐怕沒有避免寫某種數據結構定義的方式。我將編輯回覆,以便爲您舉例說明如何使用類別解決問題。 – smisak 2013-04-23 21:28:58

+0

我在考慮存儲用戶的選擇作爲文本BLOB列的XML文件。我相信Azure上的SQL Server支持在這些列的模式中搜索和過濾。不過,我從來沒有做過。 – Infin8Loop 2013-04-26 15:53:43