Tôi gặp lỗi sau khi cố gắng thực hiện truy vấn linq:
LINQ to Entities không nhận dạng phương thức 'Boolean IsCharityMatching (System.String, System.String)' và phương thức này không thể được dịch thành một biểu thức lưu trữ.
Tôi đã đọc rất nhiều câu hỏi trước đây trong đó mọi người gặp cùng một lỗi và nếu tôi hiểu chính xác điều này là do LINQ to Entities yêu cầu toàn bộ biểu thức truy vấn linq được dịch sang truy vấn máy chủ và do đó bạn không thể gọi một phương thức bên ngoài trong đó. Tôi vẫn chưa thể chuyển đổi kịch bản của mình thành một thứ gì đó hoạt động được và não của tôi đang bắt đầu tan chảy, vì vậy tôi đã hy vọng ai đó có thể chỉ cho tôi đúng hướng. Chúng tôi đang sử dụng Entity Framework và mẫu đặc tả (và tôi là người mới sử dụng cả hai).
Đây là mã sử dụng đặc điểm kỹ thuật:
ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);
charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList();
Đây là biểu thức linq:
public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied()
{
return p => p.IsCharityMatching(this.charityName, this.charityReference);
}
Đây là phương pháp IsCharityMatching:
public bool IsCharityMatching(string name, string referenceNumber)
{
bool exists = true;
if (!String.IsNullOrEmpty(name))
{
if (!this.registeredName.ToLower().Contains(name.ToLower()) &&
!this.alias.ToLower().Contains(name.ToLower()) &&
!this.charityId.ToLower().Contains(name.ToLower()))
{
exists = false;
}
}
if (!String.IsNullOrEmpty(referenceNumber))
{
if (!this.charityReference.ToLower().Contains(referenceNumber.ToLower()))
{
exists = false;
}
}
return exists;
}
Nói cho tôi biết nếu bạn cần nhiều thông tin khác.
Cảm ơn nhiều,
Annelie
Find()
như thế nào khi bạn sử dụng IsSatisfied()
bên trong nó như thế nào .