DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.27k stars 1.33k forks source link

.SelectAll()获取日期出错 #1113

Closed Tinyipfaan closed 1 year ago

Tinyipfaan commented 1 year ago
var listDto = await GetSugarContext().Queryable
            <LantekPart, LantekMaterial>
            ((it, material)
            => new JoinQueryInfos(
                JoinType.Left, it.DisMatRef == material.MatRef
            ))
            .Where(it => prdRefs.Contains(it.PrdRef))
            .Select((it, material)
                => new LantekPartDto
                {
                    // part.all
                    RecID = it.RecID.SelectAll(),
                    ImageBmp = it.Image,

                    // material
                    Density = material.Density,
                })
            .ToListAsync();
企业微信截图_16708215718180 企业微信截图_16708216825009

Dto字段density拿到了,entity字段有的没拿到

企业微信截图_16708217378429

数据库中记录分别是一个时间和空string

LantekPart, LantekMaterial两个表都有RecID

public DateTime DisPriceDate { get; set; }
public string DisProfileRef { get; set; }
[Column("DIS_PriceDate")]
    [Comment("Last price modification")]
    public DateTime DisPriceDate { get; set; }

[Column("DIS_ProfileRef")]
    [Comment("Profile")]
    public string DisProfileRef { get; set; }

这种就取到了

企业微信截图_1670822023437

你底层可能做值的判断了,entity的字段在数据库中都是非Null,这个改不了。

DotNetNext commented 1 year ago

提供完整加测试数据用例 https://www.donet5.com/Home/Doc?typeId=2366 按这个模版提供

DotNetNext commented 1 year ago

DTO如果字段名字不一样是查询不到的,要一模一样

DotNetNext commented 1 year ago

我看你的表名都有下划线

DotNetNext commented 1 year ago
//自动返回DTO : 请升级 5.1.3.35  
var listDto= db.Queryable<Student>()
            .Select((it,b)=>new StudentDto()
             {
                  bname=b.name //手动指定一列在自动映射
             },
             true)//true表式开启自动映射
            .ToList();//返回List

可以试试自动映射功能 ,这个是以实体名字映射的

DotNetNext commented 1 year ago

SelectAll目前如果DTO不加特性和数据库不一样是没办法映射的

Tinyipfaan commented 1 year ago

建议自动映射的时候按照C#字段映射,否则添加说明

Tinyipfaan commented 1 year ago

可以映射了,加特性是指什么,为什么我Dto继承Entity这个就能映射成功了

DotNetNext commented 1 year ago

继承带有实体类特性