Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 亚音速3使用内存的方式_Entity Framework_Dataset_Subsonic_Subsonic3 - Fatal编程技术网

Entity framework 亚音速3使用内存的方式

Entity framework 亚音速3使用内存的方式,entity-framework,dataset,subsonic,subsonic3,Entity Framework,Dataset,Subsonic,Subsonic3,我试图在亚音速3,数据集和实体框架之间做一个比较。原因是为了实习我必须明确我的选择。到目前为止,我还知道数据集以以下方式检索数据: 将数据库存储到内存中 内存中数据库的查询 查询结果 实体框架(.NET 3.5版)按以下方式执行。 (使用.net 3.5是因为它需要在SharePoint 2010上工作,而由于CLR版本,此版本仅支持.net 3.5) 数据库查询 结果返回到内存中的对象中 返回的结果 到现在为止,我还没有找到一个亚音速3的方案,他们是如何做到的。 我希望你们中的一位能够帮助我这

我试图在亚音速3,数据集和实体框架之间做一个比较。原因是为了实习我必须明确我的选择。到目前为止,我还知道数据集以以下方式检索数据:

  • 将数据库存储到内存中
  • 内存中数据库的查询
  • 查询结果
  • 实体框架(.NET 3.5版)按以下方式执行。 (使用.net 3.5是因为它需要在SharePoint 2010上工作,而由于CLR版本,此版本仅支持.net 3.5)

  • 数据库查询
  • 结果返回到内存中的对象中
  • 返回的结果
  • 到现在为止,我还没有找到一个亚音速3的方案,他们是如何做到的。
    我希望你们中的一位能够帮助我

    这完全取决于您使用的策略(ActiveRecord/LinqTemplates/SimpleRepository)

    • ActiveRecord: 每个记录都将自己的实例保存到repo中,这将导致大型列表的高内存使用率

    • LinqTemplates: 更少的内存使用,您有一个数据库实例,它保存每个表和纯数据的方案

    • 简单假定 甚至更少,因为repo实例对数据库一无所知。它几乎只使用内存中的纯数据


    我建议同时使用ActiveRecord和Linq模板。Linq用于查询大型列表,ActiveRecord用于编辑单个记录或小型列表(这完全取决于您使用的策略(ActiveRecord/LinqTemplates/SimpleRepository)

    • ActiveRecord: 每个记录都将自己的实例保存到repo中,这将导致大型列表的高内存使用率

    • LinqTemplates: 更少的内存使用,您有一个数据库实例,它保存每个表和纯数据的方案

    • 简单假定 更不用说,因为repo实例对数据库一无所知,它几乎只知道内存中纯数据的使用


    我建议同时使用ActiveRecord和Linq模板。Linq用于查询大型列表,ActiveRecord用于编辑单个记录或小型列表(谢谢你的回答。现在我还可以对亚音速的工作原理做一个更好的比较。我尝试了用ActiveRecords的方式喷射,但与EF相比,读取2000条记录,并将1000到5000条记录写入数据库,速度非常慢。这将帮助我更好地理解亚音速。亚音速的伟大之处在于,它可以工作非常接近数据库。在内部它总是:
    创建连接,执行命令,从DataReader读取结果
    。如果您注意到速度慢,可能是数据库中可以改进的东西,或者您使用了错误的亚音速方法(无需从数据库中提取产品来更新其类别:
    db.update().Set(x=>x.CategoryId=5)。其中(x=>x.ProductId==123)。Execute();
    )。您甚至可以使用亚音速自己的查询工具或纯sql查询无法通过linq的更新进行预测的查询:该应用程序将是一个在SharePoint Intranet中工作的工作时间注册系统。谢谢您的回答。现在,我还可以更好地比较亚音速的工作原理。我尝试了jet活动eRecords是这样的,但与EF相比,它的速度非常慢,读取2000条记录,并将1000到5000条记录写入数据库。这将帮助我更好地理解亚音速。亚音速的好处是,它与数据库非常接近。在内部,它总是:
    创建连接,执行命令,从DataReader读取结果ode>。如果您注意到速度较慢,则可能是数据库中可以改进的内容,或者您使用了亚音速提供的错误方法(无需从数据库中提取产品来更新其类别:
    db.update().Set(x=>x.CategoryId=5)。其中(x=>x.ProductId==123.Execute();
    )。您甚至可以使用亚音速自己的查询工具或纯sql查询无法通过linq的更新进行投影的查询:该应用程序将是一个在SharePoint Intranet中工作的工作时间注册系统
    var db = new NorthwindDb();
    
    // does not hit the database (just an expression)
    // since we only need ProductId and ProductName in this example,
    // there is no need to pull the entiry Product from the database.
    var query = from p in db.Products
                where p.CategoryId == 5
                select new {p.ProductId, p.ProductName };
    
    // executes: SELECT COUNT(*) FROM products WHERE categoryid = 5;
    var count = query.Count();
    
    // does not execute anything
    var top10 = query.Take(10);
    
    // executes: SELECT productid, productname
    //           FROM products WHERE categoryid = 5 LIMIT 10
    // LIMIT = MySQL paging, don't know how to write that for SQLServer
    // p in this example is not a product, but an anonymous type with
    // only two properties (ProductName and ProductId)
    foreach (var p in top10);
        Console.WriteLine("ProductId {0} Name {1}", p.ProductId, p.ProductName);