Я кодирования интернет приложения с MVC 5, и я получаю следующее сообщение об ошибке:«LINQ to Entities не распознает метод« Boolean *** », и этот метод не может быть переведен в выражение хранилища».
base = {"LINQ to Entities does not recognize the method 'Boolean IsAccountSetupForSendingFreeTrialSubscriptionExpirationEmail(CanFindLocation.Models.Account)' method, and this method cannot be translated into a store expression."}
Вот мои методы:
public IEnumerable<Account> GetFreeTrialAccountsForSendDailyExpirationEmails(int minimumDaysLeftInSubscriptionForEmail)
{
IEnumerable<Account> freeTrialAccounts = genericMultipleRepository.accounts.Value.SearchFor(a => IsAccountSetupForSendingFreeTrialSubscriptionExpirationEmail(a) && ShouldDailyExpirationEmailBeSentForFreeTrialAccount(a, minimumDaysLeftInSubscriptionForEmail));
return freeTrialAccounts;
}
public bool IsAccountSetupForSendingFreeTrialSubscriptionExpirationEmail(Account account)
{
if (account.isFreeTrial && account.sendSubscriptionExpirationEmail)
{
return true;
}
else
{
return false;
}
}
public bool ShouldDailyExpirationEmailBeSentForFreeTrialAccount(Account account, int minimumDaysLeftInSubscriptionForEmail)
{
if (IsExpiresDateTimeLessThanMinimumDaysLeftInFreeTrialSubscription(account, minimumDaysLeftInSubscriptionForEmail) && !HasSubscriptionEmailBeenSentForCurrentFreeTrialEndDateTime(account))
{
return true;
}
else
{
return false;
}
}
public bool IsExpiresDateTimeLessThanMinimumDaysLeftInFreeTrialSubscription(Account account, int minimumDaysLeftInSubscriptionForEmail)
{
TimeSpan expires = account.freeTrialEndDate - DateTime.UtcNow;
return expires.Days < minimumDaysLeftInSubscriptionForEmail;
}
public bool HasSubscriptionEmailBeenSentForCurrentFreeTrialEndDateTime(Account account)
{
return account.subscriptionEndDateForExpirationEmail == account.freeTrialEndDate;
}
Мой объект Account имеет следующие поля:
public bool isFreeTrial { get; set; }
public bool sendSubscriptionExpirationEmail { get; set; }
public DateTime subscriptionEndDateForExpirationEmail { get; set; }
public DateTime freeTrialEndDate { get; set; }
Я провел некоторое исследование, и я понял, что код, который я написал, не может быть преобразован в выражение LINQ.
Что нужно сделать, чтобы преобразовать код в допустимую форму, чтобы LINQ to Entities не выполнял ошибку?
Заранее спасибо.
'(учетная запись счета, внутр minimumDaysLeftInSubscriptionForEmail) ShouldDailyExpirationEmailBeSentForFreeTrialAccount' не могут быть преобразованы в Expression Linq, так как он имеет тип 'Func ', а не' Expression > '. Встройте код, и он должен работать. –
Aron