mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 优化 支持实体类使用 new 重写属性;
This commit is contained in:
		@@ -130,6 +130,13 @@
 | 
				
			|||||||
            清空状态数据
 | 
					            清空状态数据
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            根据 lambda 条件删除数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="predicate"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
					        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            添加
 | 
					            添加
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,85 @@ namespace FreeSql.Tests.Odbc.MySql
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public class MySqlCodeFirstTest
 | 
					    public class MySqlCodeFirstTest
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void EnumStartValue1()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var fsql = g.mysql;
 | 
				
			||||||
 | 
					            fsql.Delete<TS_ESV1>().Where("1=1").ExecuteAffrows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var repo = fsql.GetRepository<TS_ESV1>();
 | 
				
			||||||
 | 
					            var item1 = repo.Insert(new TS_ESV1 { Status = TS_TSV1_Status.Status1 });
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status1).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status2).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status3).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status1).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status2).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status3).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status1;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status2;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status3;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status3;
 | 
				
			||||||
 | 
					            fsql.GetRepository<TS_ESV1>().Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status2;
 | 
				
			||||||
 | 
					            fsql.GetRepository<TS_ESV1>().Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public class TS_ESV1
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public Guid Id { get; set; }
 | 
				
			||||||
 | 
					            public TS_TSV1_Status Status { get; set; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public enum TS_TSV1_Status
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Status1 = 1,
 | 
				
			||||||
 | 
					            Status2 = 3,
 | 
				
			||||||
 | 
					            Status3 = 5
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void StringLength()
 | 
					        public void StringLength()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,85 @@ namespace FreeSql.Tests.MySql
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public class MySqlCodeFirstTest
 | 
					    public class MySqlCodeFirstTest
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void EnumStartValue1()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var fsql = g.mysql;
 | 
				
			||||||
 | 
					            fsql.Delete<TS_ESV1>().Where("1=1").ExecuteAffrows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var repo = fsql.GetRepository<TS_ESV1>();
 | 
				
			||||||
 | 
					            var item1 = repo.Insert(new TS_ESV1 { Status = TS_TSV1_Status.Status1 });
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status1).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status2).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status3).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status1' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status1).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status2' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status2).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE `TS_ESV1` SET `Status` = 'Status3' WHERE (`Id` = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status3).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status1;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status2;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status3;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status3;
 | 
				
			||||||
 | 
					            fsql.GetRepository<TS_ESV1>().Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status2;
 | 
				
			||||||
 | 
					            fsql.GetRepository<TS_ESV1>().Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public class TS_ESV1
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public Guid Id { get; set; }
 | 
				
			||||||
 | 
					            public TS_TSV1_Status Status { get; set; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public enum TS_TSV1_Status
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Status1 = 1,
 | 
				
			||||||
 | 
					            Status2 = 3,
 | 
				
			||||||
 | 
					            Status3 = 5
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void DateTime_1()
 | 
					        public void DateTime_1()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,85 @@ namespace FreeSql.Tests.SqlServer
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public class SqlServerCodeFirstTest
 | 
					    public class SqlServerCodeFirstTest
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        [Fact] 
 | 
				
			||||||
 | 
					        public void EnumStartValue1()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var fsql = g.sqlserver;
 | 
				
			||||||
 | 
					            fsql.Delete<TS_ESV1>().Where("1=1").ExecuteAffrows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var repo = fsql.GetRepository<TS_ESV1>();
 | 
				
			||||||
 | 
					            var item1 = repo.Insert(new TS_ESV1 { Status = TS_TSV1_Status.Status1 });
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 1 WHERE ([Id] = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status1).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 3 WHERE ([Id] = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status2).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 5 WHERE ([Id] = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status, TS_TSV1_Status.Status3).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 1 WHERE ([Id] = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status1).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 3 WHERE ([Id] = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status2).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					            Assert.Equal($"UPDATE [TS_ESV1] SET [Status] = 5 WHERE ([Id] = '{item1.Id}')", fsql.Update<TS_ESV1>().Where(a => a.Id == item1.Id).NoneParameter().Set(a => a.Status == TS_TSV1_Status.Status3).ToSql().Replace("\r\n", ""));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status1;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status1, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status2;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status3;
 | 
				
			||||||
 | 
					            repo.Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status3;
 | 
				
			||||||
 | 
					            fsql.GetRepository<TS_ESV1>().Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status3, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            item1.Status = TS_TSV1_Status.Status2;
 | 
				
			||||||
 | 
					            fsql.GetRepository<TS_ESV1>().Update(item1);
 | 
				
			||||||
 | 
					            Assert.True(fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, fsql.Select<TS_ESV1>().Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					            Assert.True(repo.Select.Where(a => a.Id == item1.Id).Any());
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First().Status);
 | 
				
			||||||
 | 
					            Assert.Equal(TS_TSV1_Status.Status2, repo.Select.Where(a => a.Id == item1.Id).First(a => a.Status));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public class TS_ESV1
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public Guid Id { get; set; }
 | 
				
			||||||
 | 
					            public TS_TSV1_Status Status { get; set; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public enum TS_TSV1_Status
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Status1 = 1,
 | 
				
			||||||
 | 
					            Status2 = 3,
 | 
				
			||||||
 | 
					            Status3 = 5
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Blob()
 | 
					        public void Blob()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,12 +42,7 @@ public class g
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    static Lazy<IFreeSql> sqlserverLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
 | 
					    static Lazy<IFreeSql> sqlserverLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
 | 
				
			||||||
        .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3")
 | 
					        .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3")
 | 
				
			||||||
        //.UseConnectionFactory(FreeSql.DataType.SqlServer, () => new Microsoft.Data.SqlClient.SqlConnection("Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;"))
 | 
					 | 
				
			||||||
        //.UseConnectionFactory(FreeSql.DataType.SqlServer, () => new System.Data.SqlClient.SqlConnection("Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;"))
 | 
					 | 
				
			||||||
        //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=192.168.164.129;uid=sa;pwd=123456;Initial Catalog=ds_shop;Pooling=true;Max Pool Size=3")
 | 
					 | 
				
			||||||
        //.UseConnectionFactory(FreeSql.DataType.SqlServer, () => new System.Data.SqlClient.SqlConnection("Data Source=192.168.164.129;uid=sa;pwd=123456;Initial Catalog=ds_shop;Pooling=true;"))
 | 
					 | 
				
			||||||
        .UseAutoSyncStructure(true)
 | 
					        .UseAutoSyncStructure(true)
 | 
				
			||||||
        //.UseGenerateCommandParameterWithLambda(true)
 | 
					 | 
				
			||||||
        .UseMonitorCommand(
 | 
					        .UseMonitorCommand(
 | 
				
			||||||
            cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText) //监听SQL命令对象,在执行前
 | 
					            cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText) //监听SQL命令对象,在执行前
 | 
				
			||||||
            //, (cmd, traceLog) => Console.WriteLine(traceLog)
 | 
					            //, (cmd, traceLog) => Console.WriteLine(traceLog)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -163,7 +163,11 @@ public static partial class FreeSqlGlobalExtensions
 | 
				
			|||||||
        var dict = new Dictionary<string, PropertyInfo>(StringComparer.CurrentCultureIgnoreCase);
 | 
					        var dict = new Dictionary<string, PropertyInfo>(StringComparer.CurrentCultureIgnoreCase);
 | 
				
			||||||
        foreach (var prop in props)
 | 
					        foreach (var prop in props)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (dict.ContainsKey(prop.Name)) continue;
 | 
					            if (dict.TryGetValue(prop.Name, out var existsProp))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (existsProp.DeclaringType != prop) dict[prop.Name] = prop;
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            dict.Add(prop.Name, prop);
 | 
					            dict.Add(prop.Name, prop);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return dict;
 | 
					        return dict;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user