我目前正在使用C#开发WCF服务,作为现有内部应用的基本API。我正在开发的API专注于添加和删除数据库中的记录。
但是,该应用程序允许最终用户通过在每个表中添加自定义字段来更改现有数据库结构。
这意味着一个部门的CUSTOMER表可能如下所示:
Id | FirstName | LastName | City | State | FavColor
另一个部门的CUSTOMER表看起来像这样:
Id | FirstName | LastName | City | State | FavFood | FavMovie
在给定上述结构的情况下,如何设计一个类来支持用户定义的(Fav)字段?
我考虑过使用Dictionary来处理用户定义的字段:
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public string State { get; set; }
public Dictionary<string, string> UserDefinedFields { get; set; }
}
处理此要求是否有更好的(即更成熟/最佳做法)?
答案 0 :(得分:0)
如果用户定义的字段是有界的,那么使用类型descriminator作为字段可能会为继承提供服务。我会为此挖掘Martin Fowler的文章。但是,对于使用垂直表(称为实体属性值)的可扩展性,我在过去做过类似的事情。它运作得很好。
编辑: 我刚刚发现你也可以序列化实例并将其作为blob / text添加到持久性介质中。这样你就可以对架构相当宽松。我认为像Mongo这样的文档DB对于这类事物或MSSQL中的BLOB字段是好的