我有一个带有两个表的简单数据库。用户和配置。用户有一个外键将其链接到特定配置。
我有一个奇怪的问题,无论第二个参数值如何,以下查询总是会导致对配置表的内部联接。据我所知,即使对象初始化的“UserConfiguration =”部分是有条件的,LINQ 也看不到这一点,并确定在任何情况下都遵循关系。
如果我真的删除了最后一次初始化,整个事情就会按预期工作。当 loadConfiguration == false 时它不会内连接,而当 loadConfiguration == true 时它会加入。
有人对此有任何想法吗?这种语法是行不通的吗?我现在唯一的想法是将 return 包装在一个基本的 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();
}
}
提前致谢,
马丁。