Skip to content

希望能将Column特性的RereadSql也传递到 where 和order by 中 #2092

@jianliulin

Description

@jianliulin

Feature 特性

1.希望能将Column特性的RereadSql也传递到 where 和order by 中
2. RereadSql参数值能提供一个预设值指向其所属的表名,如: [Column(RereadSql = "__.first+__.last")] , 生成的sql中这两个__下划线替换为TableName

        public class TableName
        {
            public int Id { get; set; }


            [Column(RereadSql = "first+last")]
            public string full_name { get; set; } 
            public string first { get; set; } = "1"; 

            public string last { get; set; } = "2";
        }

                var freesql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=:memory:").Build();
                freesql.CodeFirst.SyncStructure<TableName>();

                var sssss = freesql.Select<TableName>().Where(a => a.full_name == "12").OrderBy(a=>a.full_name).ToSql();


sssss :

SELECT a."Id", first+last "full_name", a."first", a."last" 
FROM "Table" a 
WHERE (a."full_name" = '12') 
ORDER BY a."full_name"
  1. 目前 在where 和 orderby 中 full_name 未替换成 first+last

  2. 如果 [Column(RereadSql = "__.first+__.last")]
    希望sql是;

SELECT a."Id", a.first+a.last "full_name", a."first", a."last"
FROM "Table" a
WHERE ((a."first" +a."last") = '12')
ORDER BY (a."first" +a."last")

简要描述原因

// c# code

使用场景

  1. 可以根据预期值进行查询或者排序
  2. 在多表联合查询时候,在其他表中即使有相同字段名存在也可以准确的拿到预期值, 不会出现语法歧义

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions