如何使用可以从一个客户端更改为另一个客户端的对象

时间:2019-01-12 17:26:18

标签: c# json dynamicobject

我遇到一个问题,即我为一个对象(例如帐单文件)数据,而每个客户端的数据元素都不相同。更具体地说,数据中具有不同名称的字段数。我在使用C#中的对象时正在寻找解决方案。

目前,我已经为每个客户端创建了表。这些字段特定于客户端,并且在上载数据时使用映射过程。我在SQL Server中也有动态查询来处理所有原始进程。一切都很好,但是我相信有更好的解决方案,而且我相信保存Json数据将是其中之一。提取数据我首先查询表的标题,然后将数据映射到那些标题以进行数据网格等。同样,我已经有了一个可行的解决方案,但是我相信有一个更好的解决方案,并且我正在寻找带有示例的建议。顺便说一句,我已经考虑过使用C#编写动态对象,但是看来您必须知道该对象的哪些字段在前面。

1 个答案:

答案 0 :(得分:0)

我建议您创建映射表,但是不需要使用诸如动态sql之类的东西,这是表:

create table d_billing_object -- one row here means one field from your question
(
     id int not null identity (1, 1) primary key
    ,name nvarchar(255) not null
)
create table d_billing_client
(
     id int not null identity (1, 1) primary key
    ,name nvarchar(255) not null
)
create table d_billing_mapping 
(
     billing_client_id int not null
    ,client_billing_object_id int not null
    ,billing_object_id int not null
    ,constraint PK_d_billing_mapping primary key (billing_client_id, client_billing_object_id, billing_object_id)
    ,constraint FK_d_billing_mapping_d_billing_object foreign key (client_billing_object_id) references d_billing_object (id)
    ,constraint FK_d_billing_mapping_d_billing_object_2 foreign key (billing_object_id) references d_billing_object (id)
    ,constraint FK_d_billing_mapping_d_billing_client foreign key (billing_client_id) references d_billing_client (id)
)

此后,您只需要创建所有计费对象并将其用于映射表中即可用于所有客户。