我想通过字符串参数生成表达式,一些代码如:
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原语或枚举类型.
我最初在Stackoverflow和谷歌搜索了类似的问题.只有一个链接给了一些点,但我无法理解清楚.[ 1 ]
以下问题困扰着我:
在异步编程中,什么是真正的Callback方法?代表?
异步程序的实现是使用多线程?
如果提供图形解释,我将非常感激
[ 1 ] "多线程和异步编程之间的区别"
我有一个使用EF的非常简单的应用程序.但是当它运行一周时,内存使用率很差(一开始只有80MB,一周后只有700MB).当我使用dotMemory来配置我的应用程序时.我发现Heap第2代的记忆一直在增加.
我得到一个快照,最后发现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)
但这些都行不通.