2013-04-20 49 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