Как мне работать с объектами, которые могут меняться от одного клиента к другому - PullRequest
0 голосов
/ 12 января 2019

У меня есть проблема, когда я данные для объекта, например, файл биллинга, где элементы данных отличаются от клиента к клиенту. В частности, количество полей в данных и разных имен. Я ищу решение при работе с объектами в C #.

В настоящее время я создал таблицы для каждого клиента. Поля являются специфичными для клиента, и я использую процесс отображения при загрузке данных. У меня также есть динамические запросы в SQL Server для обработки всех грубых процессов. Все это работает довольно хорошо, но я считаю, что есть лучшее решение, и я считаю, что сохранение данных Json будет одним из них. Извлечение данных Сначала я запрашиваю заголовки таблицы, а затем сопоставляю данные с этими заголовками для таблиц данных и тому подобного. Опять же, у меня уже есть рабочее решение, но я считаю, что есть лучшее решение, и я ищу предложения с примерами. Кстати, я думал о динамическом объекте в C #, но, похоже, вы должны знать, какие поля объекта являются предварительными.

1 Ответ

0 голосов
/ 12 января 2019

Я предлагаю вам создать таблицу сопоставления, но нет необходимости использовать что-то вроде динамического 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)
)

После этого вам просто нужно создать все объекты выставления счетов и использовать их в таблице сопоставления для всех ваших клиентов.

...