我想为我的POS系统设计一个generic Product table
,它可以处理多种类型的细节,例如品牌,类别,类型(服务或产品)和其他更多或其他我不了解的事物,来自不同的企业。
我在Google上搜索过,似乎这个设计的最佳方法是使用Single Table Inheritance
link。
上述陈述是否正确?如果是,LINQ to SQL可以处理单表继承方法吗?如果您能为我提供一些样品,我将不胜感激,因为我厌倦了根据不同客户要求修改和添加表格。
答案 0 :(得分:1)
“单表继承”模型是LINQ to SQL支持的唯一模型。在此模型中,您可以设置鉴别器列(类型),并根据鉴别器的值指示要创建的对象类型。每个实例类型可以具有不同的字段属性。所有类型未使用的列都需要设置为可为空,以便在为给定类型插入其他列时使用空值。
话虽如此,我不确定这是您希望从您的声明中“想要根据不同客户需求修改和添加表格”的模型。单表方法要求您不仅要为表添加必要的附加列以用于新类型,还要生成新类并编译应用程序以满足这些新要求。
您可能希望查看其中一个键值对/ NoSql文档数据库方法(http://en.wikipedia.org/wiki/Key-value_store#Key-value_store)。使用键值模型,对象的每个属性都有一个单独的行,其中行由objectId,propertyName和Value组成。此数据结构允许您拥有任何形状,而无需更改数据库架构。遗憾的是,没有一种内置机制可以采用灵活的数据模型并将它们映射到LINQ中的展平对象。如果需要,可以使用.NET 4中的动态类型构建它。添加UI和业务逻辑是另一项任务。