select查询映射实体时候json属性映射失败。 返回
SqlSugar
沟通中
1
297
悬赏:0 飞吻
var express = db.Queryable<MainMsgEntity, UserMsgEntity>(innerJsonExpress.ToExpression()).AS<MainMsgEntity>(mainMsgTableName).AS<UserMsgEntity>(userMsgTableName);
var msgObjList= express.OrderByDescending(m => m.Id)
.Select((m, u) => new WSChatMsg
{
MsgId = m.Id,
MsgType = m.MsgType,
ContentMediaType = m.ContentMediaType,
Content = m.Content,
RoomId = m.RoomId,
ReceiverUserId = u.UserId,
SendTime = m.SendTime,
IsReaded = u.IsReaded,
Status = m.Status
}).Take(queryNumber).ToList();WSChatMsg的结构如下:
public class WSChatMsg
{
/// <summary>
/// 原始的信息Id
/// </summary>
public long MsgId { get; set; }
/// <summary>
/// 信息类型
/// </summary>
public MsgTypeEnum MsgType { get; set; }
/// <summary>
/// 内容媒体类型 0,文字 1:图片,2:文件,3:视频
/// </summary>
public int ContentMediaType { get; set; } = 0;
/// <summary>
/// 聊天信息内容
/// </summary>
public WSChatMsgContent? Content { get; set; }
/// <summary>
/// 聊天室Id,信息为通知时候不需要配置
/// </summary>
public long RoomId { get; set; }
/// <summary>
/// 信息收件人
/// </summary>
public long ReceiverUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime SendTime { get; set; }
/// <summary>
/// 是否已读,这个属性不能放第一位和最后一位,redis需要根据属性替换
/// </summary>
public int? IsReaded { get; set; }
/// <summary>
/// 信息状态,1正常,0撤回,
/// </summary>
public int Status { get; set; } = 1;
}查询出来的 content属性为null,但是改为匿名对象,content就可以获取,我用下面的方式就可以正常。
var express = db.Queryable<MainMsgEntity, UserMsgEntity>(innerJsonExpress.ToExpression()).AS<MainMsgEntity>(mainMsgTableName).AS<UserMsgEntity>(userMsgTableName);
var msgObjList= express.OrderByDescending(m => m.Id)
.Select((m, u) => new
{
MsgId = m.Id,
MsgType = m.MsgType,
ContentMediaType = m.ContentMediaType,
Content = m.Content,
RoomId = m.RoomId,
ReceiverUserId = u.UserId,
SendTime = m.SendTime,
IsReaded = u.IsReaded,
Status = m.Status
}).Take(queryNumber).ToList();
//先映射为匿名对象,再通过Mapster转一次
var msgList = msgObjList.AddMaps<List<WSChatMsg>>().ToList();需要通过 var msgList = msgObjList.AddMaps<List<WSChatMsg>>().ToList(); 多转换一次才正常。
麻烦版主测试一下,用的是最新的 5.1.4.214版本
热忱回答(1)
-
fate stay night VIP0
2026/2/25DTO也要加isjson
0 回复