具有可变属性列表的app的良好架构

时间:2013-04-09 22:47:52

标签: sql-server-2008 database-design asp.net-mvc-4 architecture

我们正在将一个大型的asp.net Web表单应用程序分成几个块,其中一个部分将使用asp.net mvc重建。有两种主要类型的订单(比如说类型A和B)。每个订单都有次要类型(比如A1,A2,B1,B2等),每个订单都有属性。类型A *订单几乎共享所有属性,而类型B *订单共享所有属性的一半。从订单历史中我们发现大多数订单都是A类。当前设计使用每个二级订单类型的订单表单的用户控件,因此有A1的用户控件,A2的另一个,等等。属性是字段这些用户控件。

作为重新设计的一部分,我们想看看我们是否可以远离用户控件,而是动态生成具有必要属性的订单表单,同时保持应用程序的轻量级,并且能够以最小的努力添加新的二级订单类型

设计1:创建一个包含所有可能属性的表,并将它们映射到每个辅助类型并打开/关闭属性?它可以非常精细,并包含有关如何呈现属性的信息。 优点:添加二级订单类型很简单,只需要为新订单类型添加映射。 缺点:添加新属性需要更改映射表以及可能所有层。可能需要管理部分来管理映射。

设计2:使用jquery模板替换用户控件,将json发送到服务器。 优点:轻松为新的二级订单类型添加新表单。 缺点:某些逻辑可能必须进入模板(视图)

关于哪一个是好设计的任何建议?还有更好的方法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

您的数据库设计与ASP.Net或JQuery无关。您需要担心构建可靠的数据模型。

表继承和良好的ORM将在这里提供帮助。

http://martinfowler.com/eaaCatalog/singleTableInheritance.html

https://community.jboss.org/wiki/NHibernateForNET