- 优化 varchar/nvarchar 的 NoneParameter 处理;#519

This commit is contained in:
2881099
2020-11-04 19:23:03 +08:00
parent b701ad8421
commit 639d30fafe
30 changed files with 218 additions and 50 deletions

View File

@ -104,6 +104,41 @@
班期信息
</summary>
</member>
<member name="P:FreeSql.Tests.Issues._519.ST_Stock519.StoreHouse">
<summary>
库位
</summary>
</member>
<member name="P:FreeSql.Tests.Issues._519.ST_Stock519.Works">
<summary>
工厂
</summary>
</member>
<member name="P:FreeSql.Tests.Issues._519.ST_Stock519.MaterialCode">
<summary>
物料号
</summary>
</member>
<member name="P:FreeSql.Tests.Issues._519.ST_Stock519.BatchCode">
<summary>
条码号
</summary>
</member>
<member name="P:FreeSql.Tests.Issues._519.ST_Stock519.CreatedTime">
<summary>
创建时间
</summary>
</member>
<member name="P:FreeSql.Tests.Issues._519.ST_Stock519.CreatorID">
<summary>
创建人
</summary>
</member>
<member name="P:FreeSql.Tests.Issues._519.ST_Stock519.CreatorName">
<summary>
创建人名称
</summary>
</member>
<member name="M:FreeSql.Tests.MySql.MySqlCodeFirstTest.Tb_alltype.Save">
<summary>
保存或添加,如果主键有值则尝试 Update如果影响的行为 0 则尝试 Insert

View File

@ -0,0 +1,59 @@
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Threading;
using Xunit;
namespace FreeSql.Tests.Issues
{
public class _518
{
[Fact]
public void SelectTest()
{
IFreeSql free = g.sqlserver;
//创建测试数据
using (var db = free.CreateDbContext())
{
db.Set<TestEntity518>().Remove(t => true); //清空旧数据
db.SaveChanges();
//插入三条测试数据
db.Add(new TestEntity518() { ID = "A", Name = "张三", Age = 18 });
db.Add(new TestEntity518() { ID = "B", Name = "李四", Age = 19 });
db.Add(new TestEntity518() { ID = "C", Name = "王五", Age = 20 });
db.SaveChanges();
}
//开始测试
using (var db = free.CreateDbContext())
{
var entities = db.Set<TestEntity518>().Where(t => true).ToDictionary(t => t.ID);
entities["A"].Age = 25;
db.Update(entities["A"]);
entities["B"].Age = 26;
db.Update(entities["B"]);
entities["C"].Age = 27;
//entities["C"].Name = "王五5"; //注释掉这一行就不会报错
db.Update(entities["C"]);
db.Add(new TestEntity518() { ID = "D", Name = "马六", Age = 30 });
db.SaveChanges();
}
}
class TestEntity518
{
public string ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
}

View File

@ -0,0 +1,72 @@
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Threading;
using Xunit;
namespace FreeSql.Tests.Issues
{
public class _519
{
[Fact]
public void SelectTest()
{
IFreeSql fsql = g.sqlserver;
fsql.Delete<ST_Stock519>().Where("1=1").ExecuteAffrows();
fsql.Insert(new[]
{
new ST_Stock519 { StoreHouse = "001", Works = "101", MaterialCode = "201", BatchCode = "301", CreatedTime = DateTime.Now },
new ST_Stock519 { StoreHouse = "002", Works = "102", MaterialCode = "202", BatchCode = "302", CreatedTime = DateTime.Now },
new ST_Stock519 { StoreHouse = "003", Works = "103", MaterialCode = "203", BatchCode = "303", CreatedTime = DateTime.Now }
}).ExecuteAffrows();
var list = fsql.Select<ST_Stock519>().ToList();
var sql1 = fsql.Insert(list).NoneParameter().ToSql();
var sql2 = fsql.Update<ST_Stock519>().SetSource(list).NoneParameter().ToSql();
var sql3 = fsql.InsertOrUpdate<ST_Stock519>().SetSource(list).ToSql();
}
class ST_Stock519
{
/// <summary>
/// 库位
/// </summary>
[Column(IsPrimary = true, DbType = "varchar(50)")]
public string StoreHouse { get; set; } = string.Empty;
/// <summary>
/// 工厂
/// </summary>
[Column(IsPrimary = true, DbType = "varchar(50)")]
public string Works { get; set; } = string.Empty;
/// <summary>
/// 物料号
/// </summary>
[Column(IsPrimary = true, DbType = "varchar(50)")]
public string MaterialCode { get; set; } = string.Empty;
/// <summary>
/// 条码号
/// </summary>
[Column(IsPrimary = true, DbType = "varchar(50)")]
public string BatchCode { get; set; } = string.Empty;
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreatedTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreatorID { get; set; } = string.Empty;
/// <summary>
/// 创建人名称
/// </summary>
public string CreatorName { get; set; } = string.Empty;
}
}
}