Допустим, у меня есть три таблицы:
Пользователь
ID | Name
===========
1 | UserA
-----------
2 | UserB
-----------
Настройка
ID | Name | Default
=========================
1 | SettingA | ADefault
-------------------------
2 | SettingB | BDefault
-------------------------
И
UserSetting
UserID | SettingID | Value
================================
1 | 1 | Alice
--------------------------------
1 | 2 | Bob
--------------------------------
2 | 1 | AOverride
--------------------------------
Когда я создаю свой dbml-файл, он соответствующим образом связывает пользователя с UserSetting
и UserSetting
с Setting
на основе внешних ключей, установленных в базе данных.
Что меня интересует, так это то, можно ли объединиться обратно из UserSetting
в таблицу Setting
, если пользователь специально не переопределил значение таким способом, который имеет смысл.
В частности, я ищу следующий псевдокод:
var user = MyDataContext.Users.SingleOrDefault(u => u.ID == 2);
foreach(var setting in user.UserSettings)
{
Console.Writeline(setting.ID + "|" + setting.Value);
}
Чтобы вывести что-то вроде этого:
1 | AOverride
2 | BDefault
Без изменений user.UserSettings будет содержать только значения, которые были специально переопределены, поэтому он будет только возвращать:
1 | AOverride
Есть идеи? Или кто-то с большим количеством представителей, пожалуйста, помогите мне перефразировать это, так как это, вероятно, не совсем понятно? :)