![](/img/trans.png)
[英]Unable to create a constant value of type 'Anonymous type'. Only primitive types or enumeration types are supported in this context
[英]UOW pattern - Unable to create a constant value of type Only primitive types or enumeration types are supported in this context
使用UOW模式和实体框架时出现问题。 下面的第一个linq,orders1,运行良好,并为SQL Server生成了一条SQL语句-这是直接由数据库直接生成的EF上下文。 在下面的第二个LINQ中,orders2,我试图为UOW模式做准备,并将数据库包装在Repository对象中-但是它引发了一个例外:“无法创建类型yyy的常量值。仅原始类型或枚举在此上下文中支持类型。”
linq的重点是查找在过去30天内未订购相同RiskID的订单。 是否有某种方式可以重写linq,以便order1不会两次调用上下文。 还是在存储库模式中可以遵循某些技术,以便可以在子查询中再次引用同一张表?
所有这些都是EF5。
using (var db = new xxxEntities())
{
var orders1 =
(from order in db.Orders
where !db.Orders.Any(otherOrder =>
otherOrder.RiskId == order.RiskId &&
otherOrder.DateTimeOrdered < order.DateTimeOrdered &&
otherOrder.DateTimeOrdered > EntityFunctions.AddDays(order.DateTimeOrdered, -30))
select order
).ToList();
}
var repository = new Repository<Order>(new xxxEntities());
var orders2 =
(from order in repository.DbSet
where !repository.DbSet.Any(otherOrder =>
otherOrder.RiskId == order.RiskId &&
otherOrder.DateTimeOrdered < order.DateTimeOrdered &&
otherOrder.DateTimeOrdered > EntityFunctions.AddDays(order.DateTimeOrdered, -30))
select order
).ToList();
另一个堆栈溢出后的帮助很大-我需要将DbSet转换为ObjectSet。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.