zoukankan      html  css  js  c++  java
  • Lerning Entity Framework 6 ------ Working with in-memory data


    Sometimes, you need to find some data in an existing context instead of the database. By befault, Entity Framework always find data in database. If you want to find data which have loaded in memory, please do it like this:

    Frist of all, let's insert some data for testing:

    图片.png-8.2kB

    Then, Write some codes:

    class Program
    {
        static void Main(string[] args)
        {
            using (MyContext db = new MyContext())
            {
                var person = db.People.Find(1);
    
                var anotherPersons = db.People.Where(p => p.Age > 0);
                int count = anotherPersons.Count();
            }
    
            Console.ReadLine();
        }
    }
    
    public class Person
    {
        public int PersonId { get; set; }
    
        public int Age { get; set; }
    
        [MaxLength(50)]
        public string Name { get; set; }
    }
    
    public class MyContext:DbContext
    {
        public MyContext():base("name=Test")
        {
            DbInterception.Add(new MyCommandInterceptor());
        }
    
        public DbSet<Person> People { get; set; }
    }
    
    class MyCommandInterceptor : DbCommandInterceptor
    {
        public override void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
        {
            base.NonQueryExecuted(command, interceptionContext);
        }
    
        public override void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
        {
            base.ReaderExecuted(command, interceptionContext);
            Console.WriteLine("----------------------");
            Console.WriteLine(command.CommandText);
            Console.WriteLine();
    
        }
    
        public override void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
        {
            base.ScalarExecuted(command, interceptionContext);
        }
    }
    

    Run the codes, you will find two SQL statments are excuted:

    图片.png-4.7kB

    Then, mondify the codes:

    static void Main(string[] args)
    {
        using (MyContext db = new MyContext())
        {
            var person = db.People.Find(1);
    
            var anotherPersons = db.People.Local.Where(p => p.Age > 0);
            int count = anotherPersons.Count();
        }
    
        Console.ReadLine();
    }
    

    Run it again:

    图片.png-3.2kB

    That's all.

  • 相关阅读:
    Func<T, TResult> 委托的由来和调用和好处(为了高大上,为了白富美)
    $(function(){})和jQuery(function(){})
    把一个类(或者Object)转换成字典
    MVC 控制器向View传值的三种方法
    @html.ActionLink的几种参数格式
    你给老板谈工资,老板给你谈发展.之后发生的事...
    2015-11-5 关于编译的听课笔记
    2015-10-29 韦东山OK6410 第一天课程笔记
    2015-10-26 逻辑运算符使用分析
    2015-10-26 一些位运算符 课程笔记
  • 原文地址:https://www.cnblogs.com/zzy0471/p/6854906.html
Copyright © 2011-2022 走看看