dotnetcore / dotnetcore/FreeSql

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

Open
#2,092 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
4.4k
Forks
910
PR merge metrics
No merged PRs in 30d

Description

#### Feature 特性

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

```c#
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();

var sssss = freesql.Select().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#
// c# code
```

#### 使用场景

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

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.