のは、私は3つのテーブルがあるとしましょう:UserSettingLINQのツーSQL表合体は
ID | Name | Default ========================= 1 | SettingA | ADefault ------------------------- 2 | SettingB | BDefault -------------------------
そして
を設定
ユーザー
ID | Name =========== 1 | UserA ----------- 2 | UserB -----------
を
UserID | SettingID | Value ================================ 1 | 1 | Alice -------------------------------- 1 | 2 | Bob -------------------------------- 2 | 1 | AOverride --------------------------------
私は私のDBMLファイルを作成すると、それが適切にデータベースに設定し、外部キーに基づいてSetting
にUserSetting
とUserSetting
にユーザーをリンクします。
ユーザーが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
それとも、それはおそらく正確ではないので、より多くの担当者が私にこれを言い換えるのを助けてくれますか? :)
これは完全に働きました。私は助けられたと思った小さな調整を1つ作った。linqクエリでIsDefaultを設定する代わりに、SettingValueのgetは単に(Setting.Default == Value)を返します。 – jerhinesmith