Trong cơ sở dữ liệu ASP.NET MVC 4/EF 5 của ứng dụng web của tôi, tôi có một bảng với cột Nhận xét mà tôi muốn kết hợp các nhận xét mới. Trong truyền thống T-SQL, tôi muốn viết: Làm cách nào để EF xây dựng bản cập nhật SQL bằng chuỗi concat?
UPDATE MyTable SET Comments = 'Hi' + CHAR(13)+CHAR(10) + Comments WHERE ID = 2
Tôi tìm thấy với phương pháp LINQ cho EF (UOW + mô hình kho - mà tôi hối tiếc), tôi phải đầu tiên truy vấn giá trị hiện tại của nhận xét và thêm vào trước nhận xét mới của tôi về nó:
StringBuilder displayComment = new StringBuilder();
var item = uow.MyRepos.Where(i => i.ID == 2);
item.Comments = displayComment.Append("Hi")
.Append(Environment.NewLine)
.Append(item.Comments)
.ToString();
uow.Save();
Có cách nào để viết bản cập nhật này mà không cần truy vấn DB không? Tôi muốn bằng cách nào đó có được EF để tạo ra t-sql ở trên. Các bình luận có thể dài và tôi không quan tâm về những gì nó có chứa. Hiệu suất là một mối quan tâm.
Xin cảm ơn trước.
tôi thêm này ở đây như là một lời nhận xét, bởi vì nó không phải là một câu trả lời: bạn nói đúng về những gì EF có thể làm, và làm thế nào để làm đi. Tuy nhiên, nếu bạn cần làm điều gì đó mà EF không hỗ trợ, bạn không cần phải tốn nhiều thời gian để cố gắng hoàn thành nó. Bạn chỉ có thể thực hiện một truy vấn tùy chỉnh hoặc thủ tục được lưu trữ để giải quyết vấn đề của bạn. Nó có thể trông ít thông minh hơn, nhưng tôi không nghĩ là vậy. Có rất nhiều điều mà EF không thể làm, nhưng * bạn được phép * làm những việc theo cách khác, thay vì cố gắng thực hiện các giải pháp ma thuật hoặc hack cho vấn đề của bạn. Cùng một vấn đề phát sinh với cập nhật hàng loạt hoặc xóa. Giải pháp là đơn giản – JotaBe
Cảm ơn bạn đã nói điều này @ JotaBe - Tôi đã cố gắng để ở lại trong dòng, nhưng đôi khi đó không phải là giải pháp tốt nhất. – LoJo
@LoJo bạn nói *** Tôi muốn bằng cách nào đó khiến EF tạo ra t-sql ở trên *** - vì vậy đó là lý do tại sao câu hỏi của bạn đã được upvoted để *** 5 *** (tại thời điểm tôi đã viết này). Nếu không nó chỉ là một yêu cầu bình thường, không có gì đặc biệt và thậm chí không phải là một câu trả lời cần phải được thêm vào. Bạn nên hiểu về điều đó với một số nhận xét và xóa câu hỏi ngay lập tức. – Hopeless