Tôi đang làm theo cách tiếp cận cơ sở dữ liệu trước; Tôi đã tạo ra các bảng trong cơ sở dữ liệu SQL Server 2008 của mình, sau đó tôi ánh xạ các bảng đó tới các lớp khung Entity bằng cách sử dụng một mô hình dữ liệu thực thể ADO.NET. Nhưng khi tôi mở tập tin designer.cs tôi thấy đoạn mã sau trong định nghĩa lớp được tạo ra tự động:Tại sao Entity Framework tự động sử dụng ObjectContext thay vì DbContext khi ánh xạ các bảng cơ sở dữ liệu bằng cách sử dụng ADO.NET Entity datamodel
public partial class PortalEntities : ObjectContext
vì vậy tôi đã sau ba câu hỏi đó bị lẫn lộn của tôi:
Tại sao sao lớp học
PortalEntities
của tôi xuất phát từObjectContext
và không phảiDbContext
như tôi mong đợi?Có một sự khác biệt lớn giữa
ObjectContext
&DbContext
, hoặc họ chủ yếu là giống nhau và cung cấp cùng khả năngKhi tôi cố gắng viết một cái gì đó tương tự như đoạn mã sau:
Student student = db.Students.Find(id);
Tôi thấy rằng tôi không thể sử dụng phương pháp .Find()
như tôi đã từng sử dụng DbContext
, do đó, điều này có nghĩa là ObjectContext
& DbContext
có các phương pháp khác nhau mà tôi có thể sử dụng?
BR
cảm ơn câu trả lời của bạn; nhưng tôi sẽ được hưởng lợi từ việc sử dụng DbContext thay vì ObjectContext trong apprach cơ sở dữ liệu của tôi đầu tiên? –
DbContext có giao diện đơn giản. Nó sẽ dễ sử dụng hơn và nếu cần thiết, bạn luôn có thể truyền nó đến một ObjectContext. Ngoài ra, DbContext còn dễ dàng hơn cho các mục đích thử nghiệm đơn vị. –
Giải thích rõ ràng! Cảm ơn – GibboK