Tôi đang cố gắng hiểu các khái niệm cơ bản về Khung thực thể và tôi có câu hỏi về phương thức Set <> trên DbContext. Tôi đang sử dụng một mô hình cơ sở dữ liệu đầu tiên cho câu hỏi sau đây.Khuôn khổ thực thể: Khi nào sử dụng Set <>
Giả sử tôi có cơ sở dữ liệu ActivityLog, trong số những thứ khác tôi có thể sử dụng để rút ra một tin nhắn (ví dụ: thông điệp NLog). Tôi có thể viết một số mã để kéo ra khỏi tất cả các thư như thế này:
using (var entities = new ActivityLogEntities())
foreach (var log in entities.AcitivityLogs)
Console.WriteLine(log.Message);
Tuy nhiên tôi cũng có thể đạt được điều tương làm điều này:
using (var entities = new ActivityLogEntities())
foreach (var message in entities.Set<ActivityLog>().Select(entity => entity.Message))
Console.WriteLine(message);
Câu hỏi của tôi là sự khác biệt giữa hai câu lệnh này là gì? Khi nào thì thích hợp hơn khi sử dụng cái kia? Hay đây chỉ là vấn đề sở thích cá nhân?
Nếu bạn không có thuộc tính 'ActivityLogs', bạn không thể sử dụng thuộc tính' ActivityLogs'. Điều đó có vẻ giống như một phản ứng vô ích, nhưng tôi đã có những tình huống mà tôi cần truy cập vào một 'DbSet' cho một loại cố ý không có thuộc tính trực tiếp cho các thực thể thuộc loại đó. Nhưng điều này không trả lời câu hỏi trong đó có thể sử dụng khi cả hai đều có thể. –
hvd
@hvd đã đồng ý nhưng khá hiếm khi có loại không được tham chiếu theo ngữ cảnh (và nó không hoàn toàn tầm thường để làm) –
@LukeMcGregor Xem xét 'lớp công khai Đặt hàng {public ICollection Lines {get; bộ; }} public class OrderLine {} public class Context {public IDbSet Đơn đặt hàng {get; bộ tư nhân; }} '. Không cần thêm công việc nào để thực hiện công việc này, và nó thường không có ý nghĩa để truy cập 'OrderLines' mà không có đơn đặt hàng, vậy tại sao tôi nên thêm một thuộc tính' OrderLines' ở mức ngữ cảnh? –
hvd