我们对自定义字段的项目有要求.我们在桌面上有一些标准字段,每个客户都希望能够添加自己的自定义字段.目前我对如何在UI中工作不感兴趣,但我想知道后端存储和数据检索的选项.我最近一次做这样的事情是大约10年前的VB6,所以我很想知道今天.Net世界中这个问题的选择是什么.
该项目使用sql服务器作为后端,使用linq-to-sql作为ORM和C#asp.net前端.
我有什么选择?
谢谢
解决方法
这里有四个主要选项:
>实际上在运行时更改架构(DDL) – 但是,几乎没有ORM会喜欢它,并且通常存在安全问题,因为您的“app”帐户通常不应该重新定义数据库;但是,它确实避免了下两个中固有的“内部平台”效应
>使用键值存储作为行,即Customer表可能有一个CustomerValues表,其中包含“dfeeNumber”= 12345(每个自定义键/值对一行) – 但使用起来很麻烦(而不是“获取” “,这是每个实体的”获取“和”列表“)
>在CustomFields单个单元格中使用单个数据块(xml,json等) – 再次,不适合使用,但更容易与主记录一起原子地存储(缺点:强制您将所有自定义字段加载到读一个)
>使用文档数据库(根本没有架构) – 但是:没有ORM
我在不同的地方使用了全部4个.所有4都可以工作.因人而异.