.Net和SQL Server中的自定义字段

Hoo*_*ody 6 .net c# sql sql-server asp.net

我们对自定义字段的项目有要求.我们在桌面上有一些标准字段,每个客户都希望能够添加自己的自定义字段.目前我对如何在UI中工作不感兴趣,但我想知道后端存储和数据检索的选项.我最近一次做这样的事情是大约10年前的VB6,所以我很想知道今天.Net世界中这个问题的选择是什么.

该项目使用SQL服务器作为后端,使用linq-to-sql作为ORM和C#asp.net前端.

我有什么选择?

谢谢

Mar*_*ell 12

这里有四个主要选项:

  • 实际上在运行时更改模式(DDL) - 但是,几乎没有ORM会喜欢它,并且通常存在安全问题,因为您的"app"帐户通常不应该重新定义数据库; 但是,它确实避免了下两个中固有的"内部平台"效应
  • 使用键值存储作为行,即一个Customer表可能有一个CustomerValues"dfeeNumber"= 12345(每个自定义键/值对一行)的表 - 但是使用起来很痛苦(而不是"获取",这是一个"获取" "和每个实体的"清单")
  • CustomFields单个单元格中使用单个数据块(xml,json等)- 再次,不适合使用,但更容易与主记录原子地存储(缺点:强制您加载所有自定义字段以读取单一)
  • 使用文档数据库(根本没有架构) - 但是:没有ORM

我在不同的地方使用了全部4个.所有4都可以工作.因人而异.

  • +1我们的代码中有两个在少数几个地方运行 - 如果它们的规模保持在控制范围内,它们都能很好地运行.最后一个很有意思.我个人希望永远不会看到的第一个. (2认同)