Скажем, у меня есть три таблицы:Linq к SQL Таблица Coalesce
пользователя
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
Любые идеи? Или может кто-то с большим количеством репрессий, пожалуйста, помогите мне перефразировать это, так как это, вероятно, не совсем ясно? :)
Это сработало отлично. Я сделал небольшую корректировку, которую, как мне показалось, помог.Вместо того, чтобы устанавливать IsDefault в запросе linq, get в SettingValue просто возвращает (Setting.Default == Value). – jerhinesmith