小编yub*_*lee的帖子

按字符串生成EF orderby Expression

我想通过字符串参数生成表达式,一些代码如:

private Expression<Func<Task, T>> Generate(string orderby)
{
    switch (orderby)
    {
        case "Time":  
            return t => t.Time;
        case "Money":
            return t => t.RewardMoney;
        default:
            return t => t.Id;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后叫它:

_context.Items.OrderBy(Generate("Money"));
Run Code Online (Sandbox Code Playgroud)

但它无法编译!我将T改为对象.

private Expression<Func<Task, object>> Generate(string orderby)
Run Code Online (Sandbox Code Playgroud)

然后它可以编译,但它不起作用.

System.NotSupportedException:无法将类型"System.Int32"强制转换为"System.Object"类型.LINQ to Entities仅支持转换EDM原语或枚举类型.

c# linq entity-framework expression-trees

15
推荐指数
3
解决办法
9864
查看次数

c#中多线程和异步程序的区别

我最初在Stackoverflow和谷歌搜索了类似的问题.只有一个链接给了一些点,但我无法理解清楚.[ 1 ]

以下问题困扰着我:

  1. 在异步编程中,什么是真正的Callback方法?代表?

  2. 异步程序的实现是使用多线程?

如果提供图形解释,我将非常感激


[ 1 ] "多线程和异步编程之间的区别"

c# multithreading asynchronous

11
推荐指数
2
解决办法
5592
查看次数

使用Entity Framework时内存泄漏

我有一个使用EF的非常简单的应用程序.但是当它运行一周时,内存使用率很差(一开始只有80MB,一周后只有700MB).当我使用dotMemory来配置我的应用程序时.我发现Heap第2代的记忆一直在增加.

只运行40分钟

我得到一个快照,最后发现ef dbcontext的保留字节是最多的.

在此输入图像描述

我感到很困惑.我的申请很简单.代码示例:

protected CarbonBrushMonitorEntities _entities = new MYEntities();
public void Add(HistoryData data)
{
   _entities.HistoryDatas.Add(data);
   _entities.SaveChanges();
}  
Run Code Online (Sandbox Code Playgroud)

_entities 在开始时只有一次首字母,然后一直使用.

该功能Add经常被调用,大约3次/秒

我谷歌很长一段时间,并尝试一些方法,如:

_entities.Configuration.ValidateOnSaveEnabled = false;
_entities.Configuration.AutoDetectChangesEnabled = false;
_entities.Configuration.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)

但这些都行不通.

c# entity-framework

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