我们对自定义字段的项目有要求。我们在桌面上有一些标准字段,每个客户都希望能够添加自己的自定义字段。目前我对如何在UI中工作不感兴趣,但我想知道后端存储和数据检索的选项。我上次做这样的事情是大约10年前的VB6,所以我很想知道今天.Net世界中这个问题的选择是什么。
该项目使用SQL服务器作为后端,使用linq-to-sql作为ORM和C#asp.net前端。
我对此有何选择?
由于
答案 0 :(得分:12)
这里有四个主要选项:
Customer
表可能有CustomerValues
表,其中包含"dfeeNumber"
= 12345
对(每个自定义键一行/价值对) - 但是使用起来很痛苦(而不是“获取”,这是每个实体的“获取”和“列表”)CustomFields
单个单元格中使用单个数据块(xml,json等) - 再次,不适合使用,但更容易与主记录原子地存储(缺点:强迫你加载所有自定义字段以读取单个字段)我在不同的地方使用了全部4个。所有4都可以工作。 YMMV。
答案 1 :(得分:1)
我现在正在研究的项目情况类似。
当您拥有灵活的数据库架构时,请忘记linq-to-sql。当数据库架构发生变化时,无法动态更新linq-to-sql模型。
解决方案:
这是一个方便的链接2:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:10678084117056
答案 2 :(得分:0)
您指的是EAV模型(实体 - 属性 - 值)。
这是一篇文章:http://hanssens.org/post/Generic-Entity-Attribute-Value-Model-e28093-A-POCO-Implementation.aspx