zoukankan      html  css  js  c++  java
  • EntityFramework 学习 一 DBEntityEntry

    DbEntityEntry是一个重要的类,用来获取各种各样的实体信息

    可以通过DBContext的Entry方法获取DbEntityEntry的实例

    DBEntityEntry studentEntry = dbcontext.Entry(StudentEntity);

    通过DBEntityEntry,可以获取实体的状态,所有属性的当前值和原始值

    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);
        }
    
    }
        

    DbEntityEntry可以设置实体的状态如Added、Modified或Deleted

    context.Entry(student).State = System.Data.Entity.EntityState.Modified;
    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();
  • 相关阅读:
    基础才是重中之重~stream和byte[]的概念与转化
    微信扫码i支付~官方DEMO的坑
    知方可补不足~SqlServer自动备份数据库及清理备份文件
    11g r2 模拟OCR和voting disk不可用,完整恢复过程,以及一些注意事项
    自定义navigationBar的高度
    Python 中的用户自定义类型
    hdu1370-Biorhythms
    Ruby on Rails 實戰聖經阅读(三)
    重新配置与卸载 11gR2 Grid Infrastructure
    非确定有限状态自动机的构建(一)——NFA的定义和实现
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6617946.html
Copyright © 2011-2022 走看看