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.

  • 相关阅读:
    (原创)sqlite封装库SmartDB1.3发布
    合索引 与 单一列的索引
    Sql中CHARINDEX用法
    Eclipse 的快捷键以及文档注释、多行注释的快捷键
    JAVA 方法或者类的注释快捷键
    关于/r与/n 以及 /r/n 的区别总结
    c#中Split 分离字符以及空格消除方法
    C#生成Guid的几种方式
    MVC ViewBag和ViewData的使用
    软考之高级系统架构设计师(包含历年真题详解+课本教程+论文范文+视频教程)
  • 原文地址:https://www.cnblogs.com/zzy0471/p/6854906.html
Copyright © 2011-2022 走看看