我与代码第一次的EntityFramework(工作version="6.1.0")和EntityFramework.Extended(版本="6.1.0.96,在从目前的最新版本在这里,
该DbContext暴露的DbSets方式一样访问:
var set = ctx.Set<MyEntity>();
Run Code Online (Sandbox Code Playgroud)
今天我决定尝试EntityFramework.Extended库的Future Queries,很快就结束了,不知道如何继续.
以下是示例代码:
using (var ctx = new MyDbContext())
{
var u = ctx.Set<User>().Future();
var c = ctx.Set<Country>().Future();
var users = u.ToList();
}
Run Code Online (Sandbox Code Playgroud)
关于Future()文档,我应该只向DB Future()提供一个查询,这是该方法提供的.该查询应该启动,u.ToList();但会发生的是我得到这样的错误:
JIT编译器遇到内部限制.
堆栈跟踪潜水告诉我:
在EntityFramework.Future.FutureQueryBase 1.GetResult()
在EntityFramework.Future.FutureQuery 1.GetEnumerator()
在System.Collections.Generic.List 1..ctor(IEnumerable 1 collection)
在System.Linq.Enumerable.ToList [TSource](IEnumerable 1 source)
at App.Program.Main(String [] args)在c:\ Users\...\App\Program.cs:第25行
我真的不知道我错过了什么.我检查了,我ConnectionString已经MultipleResultSets设定TRUE.
我已经使用早期的版本发布测试了这个,EF.Exteneded但发生了同样的错误.
任何想法都会有很大帮助.
我正在尝试使用Entity Framework批量更新记录.我试过Entity Framework.Extensions Update方法.
该Update方法能够使用相同的更新值集批量更新一组记录.
例:
Id - Quantity
Record 1 - A - 10
Record 2 - B - 20
Record 3 - C - 30
Run Code Online (Sandbox Code Playgroud)
我们可以通过简单的调用批量更新所有上述记录
Records.Update(new => Record { Quantity = 100 });
Run Code Online (Sandbox Code Playgroud)
如何使用Entityframework.Extensions或以任何其他方法批量更新具有不同数量的每条记录,从而更快地完成批量更新?
c# linq entity-framework entity-framework-extended bulkupdate
我试图使用实体框架扩展使用批量更新,但我不确定如何做到这一点.
到目前为止,我有以下代码:
List<Guid> listIds = new List<Guid>();
listIds = listIds.Union(hem.ProductList.Where(x => x.CustListID == custListID).ToList().Select(y => y.OrderListID)).ToList();
Run Code Online (Sandbox Code Playgroud)
使用上面的查询它返回1000个订单列表.
所以我想要实现的目标:更新上面listIds中OrderListID的custListID
现在我正在尝试使用扩展的实体框架.
using (var db = new DBContextEntities())
{
var rowUpdates = db.ProductList.Update(x => x.OrderListID in listIds, x => new ProductList { CustListID = custListID});
}
Run Code Online (Sandbox Code Playgroud)
请告诉我如何实现这一目标.
当我运行此代码时,我在 Update 方法中遇到异常
public void UpdateTeststep(Teststep step)
{
_context.Teststeps.Where(t => t.TeststepId == step.TeststepId).Update(t => step);
_context.SaveChanges();
}
{"The update expression must be of type MemberInitExpression.\r\nParametername: updateExpression"}
Run Code Online (Sandbox Code Playgroud)
我的 updateExpression 有什么问题?
这是 Update 方法的源代码:
第 454 行:
var memberInitExpression = updateExpression.Body as MemberInitExpression;
if (memberInitExpression == null)
throw new ArgumentException("The update expression must be of type MemberInitExpression.", "updateExpression");
Run Code Online (Sandbox Code Playgroud)
为什么我传递的值是空的?我是否以错误的方式通过了我的测试步骤?