小编Sau*_*aul的帖子

使用Entity Framework和LINQ查询大型数据集时如何避免内存溢出

我有一个处理所有数据库方法的类,包括与实体框架相关的东西.当需要数据时,其他类可以调用此类中的方法,例如

public List<LocalDataObject> GetData(int start, int end);
Run Code Online (Sandbox Code Playgroud)

数据库使用LINQ to EF进行查询,然后调用类可以迭代数据.但由于其他类无法访问EF中的实体,因此我需要对查询执行"ToList()"操作,并将完整数据集提取到内存中.

如果这个集非常大(GB的10s-100s)会发生什么?

有没有更有效的迭代方法,仍然保持松耦合?

c# linq entity-framework

14
推荐指数
2
解决办法
2万
查看次数

使用Dispatcher时真正分离代码和表示

在我的WPF中尝试将我的类逻辑与任何接口相关的数据分开,并仅提供ObservableCollection属性进行绑定.

问题是,当我从其他线程访问那些绑定的OC时,我需要通过调度程序执行此操作.结果是,每当其中一个方法尝试更新OC时,我都需要添加许多隐藏在我的类中的Dispatcher.Invoke()调用.

我怎么能以更干净和分离的方式做到这一点,所以调度员调用是从我的方法中抽象出来的?

.net c# wpf

10
推荐指数
1
解决办法
482
查看次数

我应该压缩内存中的C#对象以获得更好的性能吗?

我有一个应用程序(C#,WPF)显示许多金融图表,其中包含来自服务器的实时数据流.在内存中收集的数据可能会变得有点大,我不想在磁盘上保留任何数据.

由于历史数据本身没有变化,只是添加了,是否有意义将数据(存储在集合对象中)保存为某种压缩格式?

是否有可能,如果有的话,任何人都可以推荐一个好的做法吗?

UPDATE

关于性能和权衡的一些注意事项:我知道压缩会增加访问数据的延迟,但是,用户只需要对到达的新数据进行快速更新.访问已经渲染的数据(例如,研究或重新渲染)时,他不需要快速响应.

.net c# wpf performance

10
推荐指数
2
解决办法
3834
查看次数

多个匿名事件处理程序 - 但只调用最后一个

我有以下代码用于模拟实时数据源,它同时发送一条消息,"Portfolio.Symbols"内的集合中每个"Symbol"类型的对象都应该响应(通过另一种方法对其进行一些处理).

为了使它同时成立,我尝试以下列方式注册匿名事件处理程序:

static public void RegisterEvents()
{
   foreach (Symbol symbol in Portfolio.Symbols)
   {
      GenerateQuoteRequest += () => { SomeMethod(symbol); };
   }
}

static public void Run()
{
   OnGenerateQuoteRequest();
   Thread.Sleep(100);
}

public delegate void OnGenerateQuoteRequestEventHandler();     
public static event OnGenerateQuoteRequestEventHandler GenerateQuoteRequest 
                                            = delegate {};
...
Run Code Online (Sandbox Code Playgroud)

然后我尝试提升事件,希望我会得到一些"SomeMethod"实例启动.不幸的是,只调用了最后添加的"符号".

我在这里错过了什么?

.net c# events

4
推荐指数
1
解决办法
230
查看次数

标签 统计

c# ×4

.net ×3

wpf ×2

entity-framework ×1

events ×1

linq ×1

performance ×1