无法创建类型' System.Object'的常量值。在LINQPad中

时间:2016-08-05 16:27:45

标签: c# entity-framework linq-to-entities linqpad

所以我试图将SQL存储过程转换为Entity Framework,它使用子查询中的函数来创建临时表。有几个子查询,所以我使用LINQPad 4和.Dump()将我的Linq输出与每个子查询的原始SQL输出进行比较(可以说是在程序中逐步)。

第一个子查询使用一个我知道返回正确值的函数(从.Dump()比较到SQL函数)。

但是,当我尝试在子查询中使用结果List<object>时,它会抛出一个

NotSupportedException:无法创建类型&#39; System.Object&#39;的常量值。在此上下文中仅支持原始类型或枚举类型。

我已经在Visual Studio EntityFramework项目中转换了使用此函数的其他过程,没有任何问题,使用与下面相同的实现方式。那么为什么LINQPad抛出异常并且Visual Studio编译并运行这样的东西就好了?我已尝试使用AsEnumerable(),但它没有解决问题。

IDbDataParameter[] sqlParameters = new[] 
        {
            new SqlParameter("@userId", 1),
            new SqlParameter("@organizationId", 1),
            new SqlParameter("@displayId", 0)
        };

fnc_PRIV_AccessibleDisplays_List accessDisplaysList = new fnc_PRIV_AccessibleDisplays_List();
var accessibleDisplays = accessDisplaysList.Execute(sqlParameters) as List<object>;

var activeMenuItems = (from m in MENU_MenuItem
                   join d in PRIV_Displays on m.DisplayId equals d.Id
                   join ad in accessibleDisplays on d.Id equals Convert.ToInt32(ClassHelper.GetPropertyValue(ad, "Id"))
                   where (m.StatusId == 1)
                   select new
                   {
                     Id = m.DisplayId,
                     Name = m.Name,
                     DefaultName = m.Name,
                     Description = m.Description,
                     FolderId = m.FolderId,
                     OrderIndex = m.OrderIndex,
                     IconUrl = m.IconUrl,
                     ViewName = d.ClassName,
                     BackgroundColorId = m.BackgroundColorId,
                     IsModifiable = m.IsModifiable,
                     DisplayOpenMode = d.DisplayOpenMode,
                     iconCls = m.iconCls
                    }).ToList();

0 个答案:

没有答案