mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +08:00
- 优化 varchar/nvarchar 的 NoneParameter 处理;#519
This commit is contained in:
@ -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
|
||||
|
59
FreeSql.Tests/FreeSql.Tests/Issues/518.cs
Normal file
59
FreeSql.Tests/FreeSql.Tests/Issues/518.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
}
|
72
FreeSql.Tests/FreeSql.Tests/Issues/519.cs
Normal file
72
FreeSql.Tests/FreeSql.Tests/Issues/519.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user