DbEntityEntry类
DbEntityEntry是一个重要的类,在检索关于实体的各种信息时非常有用。你可以通过使用DbContext的Entry方法获得一个特定实体的DBEntityEntry实例。例如:
DbEntityEntry studentEntry = dbcontext.Entry(entity);
DbEntityEntry使您能够访问实体状态,以及给定实体的所有属性的当前值和原始值。下面的示例代码展示了如何检索特定实体的重要信息。
using (var dbCtx = new SchoolDBEntities())
{
//获取studententid为1的学生
var student = dbCtx.Students.Find(1);
//编辑学生的姓名
student.StudentName = "Edited name";
//获取学生实体对象的DbEntityEntry对象
var entry = dbCtx.Entry(student);
//获取实体信息,例如全名
Console.WriteLine("Entity Name: {0}", entry.Entity.GetType().FullName);
//获得当前实体的状态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);
//获得实体属性的原始值
var orgVal = entry.OriginalValues[propertyName];
Console.WriteLine("Original Value: {0}", orgVal);
//获取实体属性的当前值
var curVal = entry.CurrentValues[propertyName];
Console.WriteLine("Current Value: {0}", curVal);
}
}
Output:
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允许您设置一个EntityState,如下所示。
context.Entry(student).State = System.Data.Entity.EntityState.Modified;
有关DbEntityEntry类(https://msdn.microsoft.com/enus/library/system.data.entity.infrastructure.dbentityentry(v=vs.113).aspx)的更多信息,请访问MSDN。
参考
https://www.entityframeworktutorial.net/
https://msdn.microsoft.com/