zoukankan      html  css  js  c++  java
  • Entity Framework Tutorial Basics(18):DBEntityEntry Class

    DBEntityEntry Class

    DBEntityEntry is an important class, which is useful in retrieving various information about an entity. You can get an instance of DBEntityEntry of a particular entity by using Entry method of DBContext. For example:

    DBEntityEntry studentEntry = dbcontext.Entry(StudentEntity);

    DBEntityEntry enables you to access entity state, current, and original values of all the property of a given entity. The following example code shows how to retrieve important information of a particular entity.

    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);
        }
    
    }
    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 enables you to set Added, Modified or Deleted EntityState to an entity as shown below.

    context.Entry(student).State = System.Data.Entity.EntityState.Modified;

    DBEntityEntry class has the following important methods:

    Method NameReturn TypeDescription
    Collection DBCollectionEntry Gets an object that represents the collection navigation property from this entity to a collection of related entities.

    Example:
    var studentDBEntityEntry = dbContext.Entry(studentEntity); 
    var collectionProperty = studentDBEntityEntry.Collection<course>(s => s.Courses);
    ComplexProperty DBComplexPropertyEntry Gets an object that represents a complex property of this entity. 
    Example:
    var studentDBEntityEntry = dbContext.Entry(studentEntity); 
    var complexProperty = studentDBEntityEntry.ComplexProperty(stud.StudentStandard);
    GetDatabaseValues DBPropertyValues Queries the database for copies of the values of the tracked entity as they currently exist in the database. Changing the values in the returned dictionary will not update the values in the database. If the entity is not found in the database then null is returned.
    Example:
    var studentDBEntityEntry = dbContext.Entry(studentEntity);
    var dbPropValues = studentDBEntityEntry.GetDatabaseValues();
    Property DBPropertyEntry Gets an object that represents a scalar or complex property of this entity.
    Example:
    var studentDBEntityEntry = dbContext.Entry(studentEntity); 
    string propertyName = studentDBEntityEntry.Property("StudentName").Name;
    Reference DBReferenceEntry Gets an object that represents the reference (i.e. non-collection) navigation property from this entity to another entity.
    Example:
    var studentDBEntityEntry = dbContext.Entry(studentEntity); 
    var referenceProperty = studentDBEntityEntry.Reference(s => s.Standard);
    Reload void Reloads the entity from the database overwriting any property values with values from the database. The entity will be in the Unchanged state after calling this method.
    Example:
    var studentDBEntityEntry = dbContext.Entry(studentEntity);
    studentDBEntityEntry.Reload();

    Visit MSND for more information on DBEntityEntry class.

  • 相关阅读:
    2014年科研方面回顾之一
    Woodbury matrix identity
    任务太多,时间太少,GT凶猛,不留情面啊。。。
    Linux系统——inode和block
    Linux系统——系统安全及应用
    Linux系统——ACL权限控制及特殊权限
    Linux系统——引导过程与服务控制
    Linux系统——Raid磁盘阵列
    Linux系统——文件系统与LVM 逻辑
    Linux系统——sed命令
  • 原文地址:https://www.cnblogs.com/purplefox2008/p/5649039.html
Copyright © 2011-2022 走看看