2 つのテーブルを持つ単純なデータベースがあります。ユーザーと構成。ユーザーは、特定の構成にリンクするための外部キーを持っています。
次のクエリでは、2 番目のパラメーター値に関係なく、構成テーブルへの内部結合が常に発生するという奇妙な問題が発生しています。私が知る限り、オブジェクトの初期化の "UserConfiguration =" 部分は条件付きですが、LINQ はそれを認識せず、いずれにせよ関係に従うと判断します。
実際に最後の初期化を削除すると、すべてが期待どおりに機能します。loadConfiguration == false の場合は内部結合しません。loadConfiguration == true の場合は結合します。
誰でもこれについて何か考えがありますか?この構文は機能しませんか? 私が今持っている唯一の考えは、リターンを基本的なifステートメントでラップすることです-重複した行を避けたかっただけです。
public UserAccount GetByUsername(string username, bool loadConfiguration)
{
using (Database database = new Database())
{
if (loadConfiguration)
{
DataLoadOptions loadOptions = new DataLoadOptions();
loadOptions.LoadWith<User>(c => c.Configuration);
database.LoadOptions = loadOptions;
}
return (from c in database.Users
where c.Username == username
select new UserAccount
{
ID = c.ID,
ConfigurationID = c.ConfigurationID,
Username = c.Username,
Password = c.Password.ToArray(),
HashSalt = c.HashSalt,
FirstName = c.FirstName,
LastName = c.LastName,
EmailAddress = c.EmailAddress,
UserConfiguration = (loadConfiguration) ? new ApplicationConfiguration
{
ID = c.Configuration.ID,
MonthlyAccountPrice = c.Configuration.MonthlyAccountPrice,
TrialAccountDays = c.Configuration.TrialAccountDays,
VAT = c.Configuration.VAT,
DateCreated = c.Configuration.DateCreated
} : null
}).Single();
}
}
前もって感謝します、
マーティン。