EF 6 - DBEntityEntry
Lớp DBEntityEntry
DBEntityEntry là một lớp quan trọng, nó là hữu ích trong việc nhận những thông tin khác nhau về một thực thể. Bạn có thể nhận một thể hiện của DBEntityEntry của một thực thể riêng biệt bằng cách sử dụng phương thức Entry của DBContext.
VD: DBEntityEntry studentEntry = dbcontext.Entry(StudentEntity);
DBEntityEntry cho phép bạn truy cập trạng thái thực thể, giá trị hiện thời và nguyên bản của tất cả thuộc tính của thực thể đưa ra. Đoạn mã sau trình bày làm thế nào để nhận thông tin quan trọng của thực thể riêng biệt.
using (var dbCtx = new SchoolDBEntities())
{
//get student whose StudentId is 1
var student = dbCtx.Students.Find(1);
//edit student name
student.StudentName = "Edited name";
//get DbEntityEntry object for student entity object
var entry = dbCtx.Entry(student);
//get entity information e.g. full name
Console.WriteLine("Entity Name: {0}", entry.Entity.GetType().FullName);
//get current EntityState
Console.WriteLine("Entity State: {0}", entry.State );
Console.WriteLine("********Property Values********");
foreach (var propertyName in entry.CurrentValues.PropertyNames )
{
Console.WriteLine("Property Name: {0}", propertyName);
//get original value
var orgVal = entry.OriginalValues[propertyName];
Console.WriteLine(" Original Value: {0}", orgVal);
//get current values
var curVal = entry.CurrentValues[propertyName];
Console.WriteLine(" Current Value: {0}", curVal);
}
}
Kết quả:
Entity Name: Student
Entity State: Modified
********Property Values********
Property Name: StudentID
Original Value: 1
Current Value: 1
Property Name: StudentName
Original Value: First Student Name
Current Value: Edited name
Property Name: StandardId
Original Value:
Current Value:
DbEntityEntry cho phép bạn cài Added, Modified hoặc Deleted EntityState tới một thực thể như bên dưới:
context.Entry(student).State = System.Data.Entity.EntityState.Modified;
Lớp DBEntityEntry có những phương thức quan trọng sau:
Tên phương thức | Kiểu trả về | Mô tả |
---|---|---|
Collection | DBCollectionEntry | Nhận một đối tượng thể hiện tập hợp thuộc tính điều hướng từ thực thể này tới tập hợp của những thực thể liên quan.
VD: |
ComplexProperty | DBComplexPropertyEntry | Nhận một đối tượng thể hiện thuộc tính phức tạp của một thực thể.
VD: |
GetDatabaseValues | DBPropertyValues | Những truy vấn CSDL cho việc sao chép dữ liệu của những thực thể được theo dõi cũng như chúng hiện đang tồn tại trong CSDL. Thay đổi những giá trị trong mảng trả về sẽ không cập nhật những giá trị trong CSDL. Nếu thực thể là không được tìm thấy trong CSDL thì nó sẽ trả về null.
VD: |
Property | DBPropertyEntry | Nhận một đối tượng thể hiện một thuộc tính scalar hoặc phức tạp của thực thể này.
VD: |
Reference | DBReferenceEntry | Nhận một đối tượng thể hiện thuộc tính điều hướng tham chiếu từ thực thể này tới thực thể khác.
VD: |
Reload | void | Tải lại thực thể từ CSDL ghi đè bất kỳ giá trị thuộc tính nào với những giá trị từ CSDL. Thực thể này sẽ ở trong trạng thái Unchanged sau khi gọi phương thức này.
VD: |
Visit MSDN for more information on DBEntityEntry class.