Skip to content

Commit efdc7c8

Browse files
2881028810
authored andcommitted
- 兼容 SqlServer varchar/nvarchar 表达式解析,分别解析为:N'' 和 '';
1 parent b338efc commit efdc7c8

File tree

27 files changed

+440
-86
lines changed

27 files changed

+440
-86
lines changed

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 0 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,65 @@ public void Array()
105105
var sql111111 = select.Where(a => inarray.Contains(a.testFieldInt)).ToList();
106106
var sql112222 = select.Where(a => inarray.Contains(a.testFieldInt) == false).ToList();
107107
var sql113333 = select.Where(a => !inarray.Contains(a.testFieldInt)).ToList();
108+
109+
//nvarchar
110+
IEnumerable<string> stringlinqlist = new List<string>(new[] { "a1", "a2", "a3" });
111+
var ntestlinq = select.Where(a => stringlinqlist.Contains(a.testFieldString)).ToList();
112+
113+
//in not in
114+
var nsql111 = select.Where(a => new[] { "a1", "a2", "a3" }.Contains(a.testFieldString)).ToList();
115+
var nsql112 = select.Where(a => new[] { "a1", "a2", "a3" }.Contains(a.testFieldString) == false).ToList();
116+
var nsql113 = select.Where(a => !new[] { "a1", "a2", "a3" }.Contains(a.testFieldString)).ToList();
117+
118+
var ninarray = new[] { "a1", "a2", "a3" };
119+
var nsql1111 = select.Where(a => ninarray.Contains(a.testFieldString)).ToList();
120+
var nsql1122 = select.Where(a => ninarray.Contains(a.testFieldString) == false).ToList();
121+
var nsql1133 = select.Where(a => !ninarray.Contains(a.testFieldString)).ToList();
122+
123+
//in not in
124+
var nsql11111 = select.Where(a => new List<string>() { "a1", "a2", "a3" }.Contains(a.testFieldString)).ToList();
125+
var nsql11222 = select.Where(a => new List<string>() { "a1", "a2", "a3" }.Contains(a.testFieldString) == false).ToList();
126+
var nsql11333 = select.Where(a => !new List<string>() { "a1", "a2", "a3" }.Contains(a.testFieldString)).ToList();
127+
128+
var nsql11111a = select.Where(a => new List<string>(new[] { "a1", "a2", "a3" }).Contains(a.testFieldString)).ToList();
129+
var nsql11222b = select.Where(a => new List<string>(new[] { "a1", "a2", "a3" }).Contains(a.testFieldString) == false).ToList();
130+
var nsql11333c = select.Where(a => !new List<string>(new[] { "a1", "a2", "a3" }).Contains(a.testFieldString)).ToList();
131+
132+
var ninarray2 = new List<string>() { "a1", "a2", "a3" };
133+
var nsql111111 = select.Where(a => ninarray2.Contains(a.testFieldString)).ToList();
134+
var nsql112222 = select.Where(a => ninarray2.Contains(a.testFieldString) == false).ToList();
135+
var nsql113333 = select.Where(a => !ninarray2.Contains(a.testFieldString)).ToList();
136+
137+
//varchar
138+
IEnumerable<string> vstringlinqlist = new List<string>(new[] { "a1", "a2", "a3" });
139+
var vtestlinq = select.Where(a => vstringlinqlist.Contains(a.testFieldStringVarchar)).ToList();
140+
141+
//in not in
142+
var vsql111 = select.Where(a => new[] { "a1", "a2", "a3" }.Contains(a.testFieldStringVarchar)).ToList();
143+
var vsql112 = select.Where(a => new[] { "a1", "a2", "a3" }.Contains(a.testFieldStringVarchar) == false).ToList();
144+
var vsql113 = select.Where(a => !new[] { "a1", "a2", "a3" }.Contains(a.testFieldStringVarchar)).ToList();
145+
146+
var vinarray = new[] { "a1", "a2", "a3" };
147+
var vsql1111 = select.Where(a => ninarray.Contains(a.testFieldStringVarchar)).ToList();
148+
var vsql1122 = select.Where(a => ninarray.Contains(a.testFieldStringVarchar) == false).ToList();
149+
var vsql1133 = select.Where(a => !ninarray.Contains(a.testFieldStringVarchar)).ToList();
150+
151+
//in not in
152+
var vsql11111 = select.Where(a => new List<string>() { "a1", "a2", "a3" }.Contains(a.testFieldStringVarchar)).ToList();
153+
var vsql11222 = select.Where(a => new List<string>() { "a1", "a2", "a3" }.Contains(a.testFieldStringVarchar) == false).ToList();
154+
var vsql11333 = select.Where(a => !new List<string>() { "a1", "a2", "a3" }.Contains(a.testFieldStringVarchar)).ToList();
155+
156+
var vsql11111a = select.Where(a => new List<string>(new[] { "a1", "a2", "a3" }).Contains(a.testFieldStringVarchar)).ToList();
157+
var vsql11222b = select.Where(a => new List<string>(new[] { "a1", "a2", "a3" }).Contains(a.testFieldStringVarchar) == false).ToList();
158+
var vsql11333c = select.Where(a => !new List<string>(new[] { "a1", "a2", "a3" }).Contains(a.testFieldStringVarchar)).ToList();
159+
160+
var vinarray2 = new List<string>() { "a1", "a2", "a3" };
161+
var vsql111111 = select.Where(a => ninarray2.Contains(a.testFieldStringVarchar)).ToList();
162+
var vsql112222 = select.Where(a => ninarray2.Contains(a.testFieldStringVarchar) == false).ToList();
163+
var vsql113333 = select.Where(a => !ninarray2.Contains(a.testFieldStringVarchar)).ToList();
108164
}
109165

110-
[Table(Name = "tb_alltype")]
166+
[Table(Name = "tb_alltypeOther")]
111167
class TableAllType
112168
{
113169
[Column(IsIdentity = true, IsPrimary = true)]
@@ -131,6 +187,9 @@ class TableAllType
131187
public DateTimeOffset testFieldDateTimeOffset { get; set; }
132188
public byte[] testFieldBytes { get; set; }
133189
public string testFieldString { get; set; }
190+
191+
[Column(DbType = "varchar(255)")]
192+
public string testFieldStringVarchar { get; set; }
134193
public Guid testFieldGuid { get; set; }
135194

136195
public bool? testFieldBoolNullable { get; set; }

0 commit comments

Comments
 (0)