Я пытаюсь найти хорошую модель для (что я считаю) несколько сложного класса. Существуют две сущности, независимые друг от друга (в том смысле, что они используют сами по себе, в другом месте приложения), группу пользователей и тип события.Моделирование данных в C#
Группа пользователей имеет список типов событий, на которые они имеют право. И кроме того, существует список строк, который применяется к каждой комбинации группы пользователей и события, которая сообщает строкам приложения заменить позже (поэтому словарь, где они являются ключом, является заменяемым полем, а значение - это значение для его замены с).
Я исхожу из большего количества фона SQL, поэтому мне легко думать в терминах таблиц и первичных ключей. Эта структура будет ключом от UserGroupID, EventTypeID, NameToReplace
, но когда я пытаюсь придумать способ сделать это в C#, я в конечном итоге с уродливым (или, по крайней мере, я думаю, что они уродливы) структур, как Dictionary<int, Dictionary<tuple<int, string>, string>>
или Dictionary<int, Dictionary<int, Dictionary<string, string>>>
I также может покончить с понятием словаря и просто составить список кортежей или список пользовательских классов, которые связывают все логические «ключи» вместе.
Мои вопросы (ы) сводятся к тому, является ли такая структура вложенной коллекции общей и/или хорошей идеей? Существуют ли лучшие методы при моделировании данных, подобных этим, на которые может меня навестить?
Заранее благодарен!
Не мог бы вы объяснить более подробно, что классовая структуру вы думали о? –
"список пользовательских классов, которые связывают все логические" ключи "вместе. Это было бы самое чистое решение. Маленький код впереди, чтобы избежать необходимости использовать словари и кортежи. –
@DStanley Спасибо за предложение. Знаете ли вы, что есть много/любой удар производительности, если у вас есть словарь с ключом от объекта, а не что-то вроде 'int'? Или это действительно сводится к тому, как вы переопределяете 'Equals()'? – Xedni