Tôi đang sử dụng Khuôn khổ thực thể trong mã dựa trên C# của tôi. Tôi đang chạy vào một sự kỳ lạ bất ngờ và đang tìm kiếm gợi ý.Khuôn khổ thực thể - Không thể chuyển đổi biểu thức lambda thành loại 'chuỗi' bởi vì nó không phải là loại đại biểu
Trường hợp 1, 2, 3, 4 ... Dự án:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll
Samples (tất cả các công việc):
RivWorks.Alpha.dll:
public static bool EndNegotitation(long ProductID)
{
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == ProductID select a).FirstOrDefault();
...
}
RivWorks.Service.dll
public static RivWorks.Model.NegotiationAutos.AutoWithImage
GetProductById(long productId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.AutoID == productId select a;
return myProduct.FirstOrDefault();
}
public static List<RivWorks.Model.NegotiationAutos.AutoWithImage>
GetProductByCompany(Guid companyId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.CompanyID == companyId select a;
return myProduct.ToList();
}
vv
Case "weirdness":
(dự án WCF) RivWorks.Web.Service.dll
Chứa các tài liệu tham khảo tương tự như các dự án khác.
public NegotiateSetup GetSetup(string method, string jsonInput)
{
...
long.TryParse(ProductID, out result);
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == result select a).FirstOrDefault();
...
}
Tôi nhận này lỗi thời gian biên dịch (từ "ở đâu" được đánh dấu trong trình soạn thảo của tôi):
Không thể chuyển đổi biểu thức lambda để gõ 'chuỗi' vì nó không phải là một loại đại biểu
Bất kỳ ý tưởng nào sẽ gây ra điều này?
Điều đó nghe có vẻ lạ. Nếu bạn xóa cuộc gọi đến 'FirstOrDefault', điều gì sẽ xảy ra?Rõ ràng là nó sẽ thất bại khi bạn cố gắng sử dụng 'sản phẩm' sau đó, nhưng câu lệnh đó có biên dịch không? –
Ngoài ra, nếu bạn thay đổi nó thành 'var product = _dbFeed.AutoWithImage.Where (a => a.AutoID == result);' điều gì xảy ra sau đó? Hãy lấy các biểu thức truy vấn ra khỏi hỗn hợp ... –
Tất cả các ví dụ đó đều thất bại. Tuy nhiên, tôi đã đi qua các báo cáo sử dụng trong tất cả các phần mã của tôi và phát hiện ra tôi đã mất tích: Sử dụng System.Linq; Điều đó đã sửa lỗi. –