zoukankan      html  css  js  c++  java
  • 不允许在查询中显式构造实体类型

    错误原因:

    1     from f in context.TableName
    2     select new MyModel()
    3     {
    4         Id = f.Id
    5     };

    select new语句中如果指定linq自动生成的实体类并且实体类中有实体类对象,就会产生错误

    用以下的代码可解决:

    方法一:

    注意:select new的是匿名实体,只能用匿名实体,后面代码会转换回相应实体

     

     1 IQueryable query = from f in context.TableName
     2                                        join c in context.tableName_2
     3                                        on f.NutrientId equals c.Id
     4                                        where f.ContentId == ContentId
     5                                        select new
     6                                        {
     7                                            Id = f.Id,
     8                                            ContentId = f.ContentId,
     9                                            NutrientId = f.NutrientId,
    10                                            OrderValue = f.OrderValue,
    11                                            ContainNum = f.ContainNum,
    12                                            Remark = f.Remark
    13                                        };
    14                     using (context.Connection)
    15                    {
    16                         DbCommand command = context.GetCommand(query);
    17                         if (context.Connection.State == ConnectionState.Closed)
    18                         {
    19                             context.Connection.Open();
    20                         }
    21                         using (DbDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
    22                         {
    23                             result = context.Translate<MyModel>(reader).ToList();
    24                         }
    25                     }

    方法二:

    自定义实体类,属性CookBookAttr是实体类对象,是可行的

     1 IList<FoodMaterialNutrient> aa = (from f in context.tablename_1
     2                               join c in context.tablename_2 on f.NutrientId equals c.Id
     3                               where f.ContentId == ContentId
     4                               select new MyModel()
     5                               {
     6                                   Id = f.Id,
     7                                   OrderValue = f.OrderValue,
     8                                   Remark = f.Remark,
     9                                   ContainNum = f.ContainNum,
    10                                   AttributeName = c.AttributeName,
    11                                   Unit = c.Unit,
    12                                   CookBookAttr = c
    13                               }).ToList();
  • 相关阅读:
    WPF 使用用户控件UserControl来切换界面(一)
    Halcon 定位与区域分割学习笔记
    Halcon 识别车牌学习笔记
    STM32CubeIDE printf 多个串口
    netcore 跨源资源共享CORS
    自定义Converter
    自定义ListBox
    ExtensionHelper扩展帮助类
    多选ComboBox
    log4net + appsettings.json
  • 原文地址:https://www.cnblogs.com/hongbi/p/2690100.html
Copyright © 2011-2022 走看看