2024-11-13 18:18:28 +08:00

3312 lines
137 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Confluent.Kafka;
using Densen.Models.ids;
using FreeSql;
using FreeSql.DataAnnotations;
using FreeSql.Extensions;
using FreeSql.Internal;
using FreeSql.Internal.CommonProvider;
using FreeSql.Internal.Model;
using FreeSql.Odbc.Default;
using MessagePack;
using Microsoft.Data.SqlClient;
using MySqlConnector;
using NetTopologySuite.Geometries;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Npgsql;
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Linq;
using System.Linq.Expressions;
using System.Numerics;
using System.Reflection;
using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
namespace base_entity
{
static partial class Program
{
class TestConfig
{
public int clicks { get; set; }
public string title { get; set; }
}
[Table(Name = "sysconfig")]
public class S_SysConfig<T> : BaseEntity<S_SysConfig<T>>
{
[Column(IsPrimary = true)]
public string Name { get; set; }
[JsonMap]
public T Config { get; set; }
public T Config2 { get; set; }
}
public class Products : BaseEntity<Products, int>
{
public string title { get; set; }
public int testint { get; set; }
}
static AsyncLocal<IUnitOfWork> _asyncUow = new AsyncLocal<IUnitOfWork>();
class Sys_reg_user
{
public Guid Id { get; set; }
public Guid OwnerId { get; set; }
public string UnionId { get; set; }
[Navigate(nameof(OwnerId))]
public Sys_owner Owner { get; set; }
}
class Sys_owner
{
public Guid Id { get; set; }
public Guid RegUserId { get; set; }
[Navigate(nameof(RegUserId))]
public Sys_reg_user RegUser { get; set; }
}
public class tttorder
{
[Column(IsPrimary = true)]
public long Id { get; set; }
public string Title { get; set; }
public int Quantity { get; set; }
public decimal Price { get; set; }
public tttorder(string title, int quantity, decimal price)
{
Id = DateTime.Now.Ticks;
Title = title;
Quantity = quantity;
Price = price;
}
}
class B
{
public long Id { get; set; }
}
class A
{
public long BId { get; set; }
public B B { get; set; }
}
[Table(Name = "as_table_log_{yyyyMMddHH}", AsTable = "createtime=2022-1-1 11(12,1 month)")]
class AsTableLog
{
public Guid id { get; set; }
public string msg { get; set; }
public DateTime createtime { get; set; }
public int click { get; set; }
}
[Table(Name = "as_table_logext_{yyyyMMddHH}", AsTable = "createtime=2022-1-1 11(12,2 month)")]
class AsTableLogExt
{
public Guid id { get; set; }
public string msg { get; set; }
public DateTime createtime { get; set; }
public int click { get; set; }
}
public class SomeEntity
{
[Column(IsIdentity = true)]
public int Id { get; set; }
[Column(MapType = typeof(JToken))]
public Customer Customer { get; set; }
}
public class Customer // Mapped to a JSON column in the table
{
public string Name { get; set; }
public int Age { get; set; }
public Order[] Orders { get; set; }
}
public class Order // Part of the JSON column
{
public decimal Price { get; set; }
public string ShippingAddress { get; set; }
}
[Table(Name = "tb_tmttld"), OraclePrimaryKeyName("TMTTLD_PK01")]
class TopicMapTypeToListDto
{
[Column(IsIdentity = true, IsPrimary = true)]
public int Id { get; set; }
public int Clicks { get; set; }
public int TypeGuid { get; set; }
public string Title { get; set; }
public DateTime CreateTime { get; set; }
[JsonMap]
public List<int> CouponIds { get; set; }
}
class TopicMapTypeToListDtoMap
{
public int Id { get; set; }
public int Clicks { get; set; }
public string Title { get; set; }
public DateTime CreateTime { get; set; }
public List<int> CouponIds { get; set; }
}
class TopicMapTypeToListDtoMap2
{
public int Id { get; set; }
public int Clicks { get; set; }
public string Title { get; set; }
public DateTime CreateTime { get; set; }
}
class tuint256tb_01
{
public Guid Id { get; set; }
public BigInteger Number { get; set; }
}
class CommandTimeoutCascade : IDisposable
{
public static AsyncLocal<int> _asyncLocalTimeout = new AsyncLocal<int>();
public CommandTimeoutCascade(int timeout) => _asyncLocalTimeout.Value = timeout;
public void Dispose() => _asyncLocalTimeout.Value = 0;
}
class EnterpriseInfo
{
[Column(IsPrimary = true, DbType = "varchar(60)")]
public string id { get; set; }
[Column(DbType = "varchar(128)")]
public string img { get; set; }
}
public class SongRepository : BaseRepository<TUserImg, int>
{
public SongRepository(IFreeSql fsql) : base(fsql, null, null)
{
//fsql.CodeFirst.Entity<TUserImg>(a =>
// {
// //a.Property(b => b.Id).DbType("varchar(100)");
// a.Property(b => b.UserId).Stringlength(120);
// a.Property(b=>b.UserId).
// });
fsql.CodeFirst
.ConfigEntity<TUserImg>(a =>
{
a.Property(b => b.UserId).StringLength(120);
});
//var info= fsql.CodeFirst.GetTableByEntity(typeof(TUserImg));
var sql = fsql.CodeFirst.GetComparisonDDLStatements<TUserImg>();
var t1 = fsql.CodeFirst.GetComparisonDDLStatements(typeof(TUserImg), "TUserImg");
fsql.CodeFirst.SyncStructure<TUserImg>(); ;//同步表结构
var debug = sql;
}
//在这里增加 CURD 以外的方法
}
public interface IEntity
{
}
/// <summary>
/// 用户图片2
/// </summary>
public partial class TUserImg : IEntity
{
///<summary>
///主键
///</summary>
public string Id { get; set; }
///<summary>
///企业
///</summary>
public string EnterpriseId { get; set; }
///<summary>
///用户id
///</summary>
public string UserId { get; set; }
///<summary>
///图片
///</summary>
public string Img { get; set; }
///<summary>
///创建人Id
///</summary>
public string CId { get; set; }
///<summary>
///创建人
///</summary>
public string CName { get; set; }
///<summary>
///创建日期
///</summary>
public DateTime CTime { get; set; }
///<summary>
///创建日期2
///</summary>
public DateTime CTime2 { get; set; }
}
class Rsbasedoc2
{
[Column(StringLength = 100)]
public string Id { get; set; }
[Column(StringLength = 100)]
public string Name { get; set; }
}
interface IDeleteSoft
{
/// <summary>
/// 软删除
/// </summary>
bool IsDeleted { get; set; }
}
class TestComment01 : IDeleteSoft
{
public bool IsDeleted { get; set; }
}
static void TestExp(IFreeSql fsql)
{
var tasks = new List<Task>();
for (var a = 0; a < 1000; a++)
{
var task = Task.Run(async () =>
{
var name = "123";
var result = await fsql.Select<Rsbasedoc2>()
.Where(t => t.Name == name
&& fsql.Select<Rsbasedoc2>().Any(t2 => t2.Id == t.Id)).ToListAsync();
});
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
}
class TreeModel
{
public int id { get; set; }
public int parentid { get; set; }
public string code { get; set; }
public ActivityStatusCode status { get; set; }
[Navigate(nameof(parentid))]
public TreeModel Parent { get; set; }
[Navigate(nameof(parentid))]
public List<TreeModel> Childs { get; set; }
}
class DateModel
{
public DateTime Date { get; set; }
}
record TestClass(string Name)
{
public Guid Id { get; set; }
public string[] Tags { get; init; } = Array.Empty<string>();
}
class BaseModel<T>
{
public static int fsql;
}
class StringNulable
{
[Column(IsPrimary = true)]
public string id { get; set; }
[Column(StringLength = -1, IsNullable = true)]
public string code1 { get; set; }
[Column(StringLength = -1, IsNullable = false)]
public string code2 { get; set; }
}
public class CCC
{
public int bb { get; set; }
public int aa { get; set; }
}
public class BBB
{
public int bb { get; set; }
}
[Table(Name = "AAA_attr")]
[Index("xxx1", nameof(aa))]
[Index("xxx2", nameof(aa))]
public class AAA
{
[Column(Name = "aa_attr")]
public int aa { get; set; }
}
[Table(Name = "db2.sql_AAA_attr")]
[Index("{tablename}_xxx1", nameof(aa))]
[Index("{tablename}_xxx2", nameof(aa))]
public class SqliteAAA
{
[Column(Name = "aa_attr")]
public int aa { get; set; }
}
public class JoinTest01
{
public int id { get; set; }
public string code { get; set; }
public string parentcode { get; set; }
public string name { get; set; }
[Column(MapType = typeof(string))]
public string JoinTest01Enum { get; set; }
[Column(MapType = typeof(int))]
public JoinTest01Enum JoinTest01Enum2 { get; set; }
[Navigate(nameof(parentcode), TempPrimary = nameof(JoinTest01.code))]
public JoinTest01 Parent { get; set; }
[Navigate(nameof(JoinTest01.parentcode), TempPrimary = nameof(code))]
public List<JoinTest01> Childs { get; set; }
}
public enum JoinTest01Enum { f1, f2, f3 }
public class AccessOdbcAdapter : OdbcAdapter
{
public override string UnicodeStringRawSql(object value, ColumnInfo mapColumn) => value == null ? "NULL" : string.Concat("'", value.ToString().Replace("'", "''"), "'");
}
private static IFreeSql CreateInstance(string connectString, DataType type)
{
IFreeSql client = new FreeSqlBuilder()
.UseConnectionString(type, connectString)
.Build();
if (DataType.Odbc.Equals(type))
{
client.SetOdbcAdapter(new AccessOdbcAdapter());
}
return client;
}
class TJson01
{
public Guid id { get; set; }
[JsonMap]
public DJson02 Json02 { get; set; }
[JsonMap]
public DJson02 Json03 { get; set; }
}
class TJson02
{
public Guid id { get; set; }
[JsonMap]
public DJson02 Json02 { get; set; }
}
public class DJson02
{
public string code { get; set; }
public string parentcode { get; set; }
public string name { get; set; }
}
class VersionBytes01
{
public Guid id { get; set; }
public string name { get; set; }
[Column(IsVersion = true)]
public byte[] version { get; set; }
}
public class Xpb
{
[Column(Name = "ID", IsPrimary = true)]
public string Id { get; set; }
[Column(Name = "XP", StringLength = -1)]
public byte[] Bytes { get; set; }
[Column(Name = "UPLOAD_TIME")]
public DateTime UploadTime { get; set; }
}
public static void VersionBytes(IFreeSql fsql)
{
fsql.Aop.ConfigEntityProperty += (_, e) =>
{
if (fsql.Ado.DataType == DataType.SqlServer &&
e.Property.Name == "version")
{
e.ModifyResult.DbType = "timestamp";
e.ModifyResult.CanInsert = false;
e.ModifyResult.CanUpdate = false;
}
};
fsql.Delete<VersionBytes01>().Where("1=1").ExecuteAffrows();
var item = new VersionBytes01 { name = "name01" };
fsql.Insert(item).ExecuteAffrows();
var itemVersion = item.version;
item = fsql.Select<VersionBytes01>().Where(a => a.id == item.id).First();
item.name = "name02";
var sql = fsql.Update<VersionBytes01>().SetSource(item).ToSql();
if (1 != fsql.Update<VersionBytes01>().SetSource(item).ExecuteAffrows()) throw new Exception("不相同");
//item.name = "name03";
//if (1 != fsql.Update<VersionBytes01>().SetSource(item).ExecuteAffrows()) throw new Exception("不相同");
if (1 != fsql.Update<VersionBytes01>().Set(a => a.name, "name04").Where(a => a.id == item.id).ExecuteAffrows()) throw new Exception("不相同");
}
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public Point Center { get; set; }
}
public abstract class BaseEntity2
{
[Column(IsPrimary = true, IsIdentity = true)]
public long Id { get; set; }
}
public class Student : BaseEntity2
{
public string Name { get; set; }
}
public record UserDto1(Guid Id, string Username, string GroupName);
public class UserDto2
{
public Guid Id { get; set; }
public string Username { get; set; }
public string GroupName { get; set; }
}
[Table(Name = "class_{0}")]
public class Class1111
{
[Column(IsPrimary = true, IsIdentity = true, IsNullable = false)]
public int Id { get; set; }
[Column(StringLength = 20, IsNullable = false)]
public string Name { get; set; }
}
[Table(Name = "student_{0}")]
public class Student2222
{
[Column(IsPrimary = true, IsIdentity = true, IsNullable = false)]
public int Id { get; set; }
[Column(IsPrimary = false, IsNullable = false)]
public int ClassId { get; set; }
[Column(StringLength = 20, IsNullable = false)]
public string Name { get; set; }
}
static void Main(string[] args)
{
var pams = new Dictionary<string, string>();
var sql2rscs = Utils.ReplaceSqlConstString("'', 'SARTEN ACERO VITR.18CM''''GRAFIT''''', 'a",
pams, "@lantin1");
//using (IFreeSql client = CreateInstance(@"Driver={Microsoft Access Driver (*.mdb)};DBQ=d:/accdb/2007.accdb", DataType.Odbc))
//{
// client.Aop.AuditValue += (_, e) =>
// {
// if (e.Object is Dictionary<string, object> dict)
// {
// foreach(var key in dict.Keys)
// {
// var val = dict[key];
// if (val == DBNull.Value) dict[key] = null;
// }
// e.ObjectAuditBreak = true;
// }
// };
// Dictionary<string, object> data = new Dictionary<string, object>();
// data.Add("ExpNo", "RSP0950008");
// data.Add("SPoint", "RSP0950004");
// data.Add("EPoint", "RSP095000440");
// data.Add("PType", "RS");
// data.Add("GType", "窨井轮廓线");
// data.Add("LineStyle", 2);
// data.Add("Memo", DBNull.Value);
// data.Add("ClassID", DBNull.Value);
// var kdkdksqlxx = client.InsertDict(data).AsTable("FZLINE").ToSql();
//}
BaseModel<User1>.fsql = 1;
BaseModel<UserGroup>.fsql = 2;
Console.WriteLine(BaseModel<User1>.fsql);
Console.WriteLine(BaseModel<UserGroup>.fsql);
#region IFreeSql
var fsql = new FreeSql.FreeSqlBuilder()
.UseAutoSyncStructure(true)
.UseNoneCommandParameter(true)
//.UseNameConvert(NameConvertType.ToLower)
.UseMappingPriority(MappingPriorityType.Attribute, MappingPriorityType.FluentApi, MappingPriorityType.Aop)
.UseAdoConnectionPool(true)
.UseConnectionString(FreeSql.DataType.Sqlite, "data source=123.db")
//.UseConnectionString(DataType.Sqlite, "data source=db1.db;attachs=db2.db")
//.UseSlave("data source=test1.db", "data source=test2.db", "data source=test3.db", "data source=test4.db")
//.UseSlaveWeight(10, 1, 1, 5)
//.UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5")
//.UseQuoteSqlName(false)
.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true")
//.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true")
//.UseAdoConnectionPool(false)
//.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=127.0.0.1;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2")
////.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=127.0.0.1;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToLower)
//.UseConnectionString(FreeSql.DataType.Oracle, "user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=2")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
//.UseConnectionString(FreeSql.DataType.Dameng, "server=127.0.0.1;port=5236;user=2user;password=123456789;database=2user;poolsize=5;")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
//.UseConnectionString(FreeSql.DataType.OdbcMySql, "Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Persist Security Info=False;Trusted_Connection=Yes;UID=root;PWD=root;DATABASE=cccddd_odbc;Charset=utf8;SslMode=none;Max pool size=2")
//.UseConnectionString(FreeSql.DataType.OdbcSqlServer, "Driver={SQL Server};Server=.;Persist Security Info=False;Trusted_Connection=Yes;Integrated Security=True;DATABASE=freesqlTest_odbc;Pooling=true;Max pool size=3")
//.UseConnectionString(FreeSql.DataType.OdbcPostgreSQL, "Driver={PostgreSQL Unicode(x64)};Server=127.0.0.1;Port=5432;UID=postgres;PWD=123456;Database=tedb_odbc;Pooling=true;Maximum Pool Size=2")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToLower)
//.UseConnectionString(FreeSql.DataType.OdbcOracle, "Driver={Oracle in XE};Server=//127.0.0.1:1521/XE;Persist Security Info=False;Trusted_Connection=Yes;UID=odbc1;PWD=123456")
//.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
//.UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789")
//.UseConnectionString(DataType.QuestDb, "host=localhost;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;")
//.UseConnectionString(DataType.ClickHouse, "DataCompress=False;BufferSize=32768;SocketTimeout=10000;CheckCompressedHash=False;Encrypt=False;Compressor=lz4;Host=192.168.0.121;Port=8125;Database=PersonnelLocation;Username=root;Password=123")
//.UseConnectionFactory(DataType.ClickHouse, () => null)
.UseMonitorCommand(cmd =>
{
Console.WriteLine(cmd.CommandText + "\r\n");
//cmd.CommandText = null; //不执行
//if (cmd.CommandText.StartsWith(""))
})
.UseLazyLoading(true)
.UseGenerateCommandParameterWithLambda(true)
.Build();
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion
FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(DateTimeOffset), new DateTimeOffsetTypeHandler());
fsql.Insert(new Account { Name = DateTime.Now.ToString(), Join = DateTimeOffset.Now }).ExecuteAffrows();
var dtslist01 = fsql.Select<Account>().As("aaa").Where(p => p.ID >= 1).AsQueryable().Select(p => new { p.Name, p.ID, p.Join }).ToList();
fsql.Select<Account>().As("aaa").Where(p => p.ID == 1).AsQueryable().Distinct().Select(p => new { p.Name, p.ID, p.Join }).Count();
var sqlc001 = fsql.Select<User1>()
.GroupBy(a => a.GroupId)
.ToSql(g => new
{
cou1 = g.Count(),
cou2 = g.Count(g.Value.Nickname),
cou3 = g.Count(g.Value.Nickname == "xx"),
cou4 = g.Count(g.Value.Sort > 50),
cou5 = g.Count(g.Value.Sort > 50 || g.Value.Username == "xx"),
});
var sqlt001 = fsql.Select<User1>()
.Where(u => u.Id == Guid.Empty)
.ToSql(u => u.GroupId / (u.Sort * 60));
sqlt001 = fsql.Select<User1>()
.Where(u => u.Id == Guid.Empty)
.ToSql(u => u.GroupId - (u.Sort + 2));
var enumToString = fsql.Select<JoinTest01>().First(s => new
{
State = ((int)s.JoinTest01Enum2).ToString()
});
var userdto1s = fsql.Select<User1>().Limit(10).ToList<UserDto1>();
var userdto11s = fsql.Select<User1>().Limit(10).ToList(a => new UserDto1(a.Id, a.Username, null));
var userdto2s = fsql.Select<User1>().Limit(10).ToList<UserDto2>();
var userdto1s2 = fsql.Select<User1, UserGroup>().InnerJoin((a, b) => a.GroupId == b.Id).Limit(10).ToList<UserDto1>();
var userdto11s2 = fsql.Select<User1, UserGroup>().InnerJoin((a, b) => a.GroupId == b.Id).Limit(10).ToList((a, b) => new UserDto1(a.Id, a.Username, b.GroupName));
var userdto2s2 = fsql.Select<User1, UserGroup>().InnerJoin((a, b) => a.GroupId == b.Id).Limit(10).ToList<UserDto2>();
fsql.Select<User1>().Where(a => a.Id == new Guid("xxx")).ToList(a => new Guid("zzz"));
fsql.Aop.AuditValue += (_, e) =>
{
};
var tt1 = new ProjectItem { ID = 1, MaxQuantity = 0, Code = null, Name = null };
var tt2 = new ProjectItem { ID = 1, MaxQuantity = 100, Code = null, Name = null };
var repot2 = fsql.GetRepository<ProjectItem>();
repot2.Attach(tt1);
var nt1 = repot2.Update(tt2);
var fsql2 = fsql;
// 动态构建实体类型,树形结构,引用自身类型
var areaBuilder = fsql2.CodeFirst.DynamicEntity("Area", new TableAttribute { Name = "dy_area" });
areaBuilder.Property("id", typeof(int), new ColumnAttribute { IsPrimary = true })
.Property("parentId", typeof(int?))
.Property("name", typeof(string), new ColumnAttribute { StringLength = 30 });
// builder.TypeBuilder可作为类型被引用
areaBuilder.Property("parent", areaBuilder.TypeBuilder, new NavigateAttribute { Bind = "parentId" })
.Property("children", typeof(List<>).MakeGenericType(areaBuilder.TypeBuilder), new NavigateAttribute { Bind = "parentId" });
var table = areaBuilder.Build();
// 迁移
fsql2.CodeFirst.SyncStructure(table.Type);
var area1 = table.CreateInstance(new Dictionary<string, object> { ["id"] = 1, ["name"] = "北京" });
var area2 = table.CreateInstance(new Dictionary<string, object> { ["id"] = 2, ["parentId"] = 1, ["name"] = "东城区" });
var area3 = table.CreateInstance(new Dictionary<string, object> { ["id"] = 3, ["parentId"] = 1, ["name"] = "西城区" });
var area1Children = Activator.CreateInstance(typeof(List<>).MakeGenericType(table.Type)) as IList;
area1Children!.Add(area2);
area1Children!.Add(area3);
table.Type.GetProperty("children")!.SetValue(area1, area1Children);
fsql2.Delete<object>().AsType(table.Type).Where("1=1").ExecuteAffrows();
var testRepo = fsql2.GetRepository<object>();
testRepo.AsType(table.Type);
testRepo.Insert(area1);
testRepo.SaveMany(area1, "children");
fsql.Delete<BaseDistrict>().Where("1=1").ExecuteAffrows();
var repoxx = fsql.GetRepository<VM_District_Child>();
repoxx.DbContextOptions.EnableCascadeSave = true;
repoxx.DbContextOptions.NoneParameter = true;
repoxx.Insert(new VM_District_Child
{
Code = "100000",
Name = "中国",
Childs = new List<VM_District_Child>(new[] {
new VM_District_Child
{
Code = "110000",
Name = "北京",
Childs = new List<VM_District_Child>(new[] {
new VM_District_Child{ Code="110100", Name = "北京市" },
new VM_District_Child{ Code="110101", Name = "东城区" },
})
}
})
});
var ttre1 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国")
.AsTreeCte(pathSelector: a => $"[{a.Name}]{a.Code}", pathSeparator: "=>")
.OrderBy(a => a.Code).ToTreeList(); ;
var list111222 = fsql.Select<OrderLine, Product>()
.InnerJoin((l, p) => l.ProductId == p.ID)
.GroupBy((l, p) => new { p.ID, ShopType = l.ShopType ?? 0 })
.WithTempQuery(a => new
{
a.Key.ID,
Money = a.Sum(a.Value.Item1.Amount) * a.Key.ShopType
})
.ToList();
Console.WriteLine(list111222);
var list0x1sql = fsql.Select<OrderLine22x, Product22x>()
.InnerJoin((l, p) => l.ProductId == p.ID)
.GroupBy((l, p) => new { p.ID, l.ShopType })
.WithTempQuery(a => new {
a.Key.ID,
Money2 = a.Key.ShopType,
Money = a.Key.ShopType == 1 ? a.Value.Item1.Price * a.Value.Item1.Amount : a.Value.Item1.Price * a.Value.Item1.Amount * 1.1m
})
.ToSql();
Console.WriteLine(list0x1sql);
var sql1c2 = fsql.Select<User1>()
.GroupBy(a => new { a.Nickname, a.Avatar })
.WithTempQuery(b => new
{
sum = b.Sum(b.Value.Sort),
b.Key.Nickname,
b.Key.Avatar,
})
.OrderByDescending(arg => arg.sum)
.ToSql(arg => new
{
str1 = string.Concat(arg.Nickname, '-', arg.Avatar, '-'),
str2 = string.Concat(arg.Nickname, '-', arg.Avatar)
}); //报错 多括号
//.ToOne(arg => string.Concat(arg.Nickname, '-', arg.Avatar)); //正常
Console.WriteLine(sql1c2);
//var clickhouseSql1 = fsql.Select<User1>().Where(a => new[] { 1, 2, 3 }.Contains(a.GroupId)).ToSql();
// var clickhouseVal1 = new[] { 1, 2, 3 };
// var clickhouseSql2 = fsql.Select<User1>().Where(a => clickhouseVal1.Contains(a.GroupId)).ToSql();
// var clickhouseSql3 = fsql.Select<User1>().Where(a => a.Tags.Contains("tag1")).ToSql();
// var clickhouseVal2 = "tag2";
// var clickhouseSql4 = fsql.Select<User1>().Where(a => a.Tags.Contains(clickhouseVal2)).ToSql();
fsql.Update<User1>()
.Where(t => t.GroupId == 1)
.ExecuteUpdated();
fsql.Update<User1>()
.Where(t => t.GroupId == 1)
.SetIf(false, t => t.CreateTime == DateTime.Now)
.ExecuteUpdated();
//fsql.CodeFirst.IsGenerateCommandParameterWithLambda = true;
//var TreeModel01 = fsql.Select<TreeModel>().Where(a => a.code == "x" && a.Childs.AsSelect().Any(b => b.id == a.id && b.status == ActivityStatusCode.Error)).ToList();
var v1 = 123123123;
var mysql0111 = fsql.Select<User1>().Where(a => a.Nickname.Contains(v1.ToString())).ToSql();
var mysql0112 = fsql.Select<User1>().Where(a => a.Nickname.Contains(123123123.ToString())).ToSql();
var v2 = "123123123";
var mysql0113 = fsql.Select<User1>().Where(a => a.Nickname.Contains(v2)).ToSql();
var mysql0114 = fsql.Select<User1>().Where(a => a.Nickname.Contains(v2.ToString())).ToSql();
var mysql0115 = fsql.Select<User1>().Where(a => a.Nickname.Contains("123123123")).ToSql();
//fsql.Select<AsTableLog>().Where(a => a.createtime > DateTime.Now && a.createtime < DateTime.Now.AddMonths(1)).ToList();
//var table = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog));
//table.SetAsTable(new ModAsTableImpl(fsql), table.ColumnsByCs[nameof(AsTableLog.click)]);
fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog)).AsTableImpl
.SetTableName(0, "AsTableLog1")
.SetTableName(1, "AsTableLog2")
.SetDefaultAllTables(value =>
{
if (value.Length > 3) return value.Take(3).ToArray();
return value;
})
;
var astsql01 = fsql.Select<AsTableLog, Sys_owner>()
.InnerJoin((a, b) => a.id == b.Id)
.OrderBy((a, b) => a.createtime)
.ToSql();
var astsql02 = fsql.Select<Sys_owner, AsTableLog>()
.InnerJoin((a, b) => a.Id == b.id)
.OrderBy((a, b) => b.createtime)
.ToSql();
var astsql03 = fsql.Select<AsTableLog>()
.Where(a => a.createtime.Between(DateTime.Parse("2022-3-1"), DateTime.Parse("2023-5-1")))
.WithTempQuery(a => a)
.FromQuery(fsql.Select<AsTableLogExt>().Where(a => a.createtime.Between(DateTime.Parse("2022-3-1"), DateTime.Parse("2023-5-1"))))
.InnerJoin((a, b) => a.id == b.id)
.OrderBy((a, b) => a.createtime)
.ToSql();
var astsql04 = fsql.Select<AsTableLog, AsTableLogExt>()
.InnerJoin((a, b) => a.id == b.id)
.Where((a,b) => a.createtime < DateTime.Parse("2023-5-1"))
.OrderBy((a, b) => a.createtime)
.ToSql();
var testitems = new[]
{
new AsTableLog{ msg = "msg01", createtime = DateTime.Parse("2022-1-1 13:00:11"), click = 1 },
new AsTableLog{ msg = "msg02", createtime = DateTime.Parse("2022-1-2 14:00:12"), click = 2 },
new AsTableLog{ msg = "msg03", createtime = DateTime.Parse("2022-2-2 15:00:13"), click = 3 },
new AsTableLog{ msg = "msg04", createtime = DateTime.Parse("2022-2-8 15:00:13"), click = 4 },
new AsTableLog{ msg = "msg05", createtime = DateTime.Parse("2022-3-8 15:00:13"), click = 5 },
new AsTableLog{ msg = "msg06", createtime = DateTime.Parse("2022-4-8 15:00:13"), click = 6 },
new AsTableLog{ msg = "msg07", createtime = DateTime.Parse("2022-6-8 15:00:13"), click = 7 },
new AsTableLog{ msg = "msg08", createtime = DateTime.Parse("2022-7-1"), click = 9},
new AsTableLog{ msg = "msg09", createtime = DateTime.Parse("2022-7-1 11:00:00"), click = 10},
new AsTableLog{ msg = "msg10", createtime = DateTime.Parse("2022-7-1 12:00:00"), click = 10}
};
var xugusql01 = fsql.Insert(testitems).ToSql();
var sqlatb = fsql.Insert(testitems).NoneParameter();
var sqlat = sqlatb.ToSql();
var sqlatr = sqlatb.ExecuteAffrows();
//var sqlatc1 = fsql.Delete<AsTableLog>().Where(a => a.click < 0);
//var sqlatca1 = sqlatc1.ToSql();
//var sqlatcr1 = sqlatc1.ExecuteAffrows();
var sqlatc1 = fsql.Delete<AsTableLog>().Where(a => a.id == Guid.NewGuid() && a.createtime == DateTime.Parse("2022-3-8 15:00:13"));
var sqlatca1 = sqlatc1.ToSql();
var sqlatcr1 = sqlatc1.ExecuteAffrows();
var sqlatc2 = fsql.Delete<AsTableLog>().Where(a => a.id == Guid.NewGuid() && a.createtime == DateTime.Parse("2021-3-8 15:00:13"));
var sqlatca2 = sqlatc2.ToSql();
var sqlatcr2 = sqlatc2.ExecuteAffrows();
var sqlatc = fsql.Delete<AsTableLog>().Where(a => a.id == Guid.NewGuid() && a.createtime.Between(DateTime.Parse("2022-3-1"), DateTime.Parse("2022-5-1")));
var sqlatca = sqlatc.ToSql();
var sqlatcr = sqlatc.ExecuteAffrows();
var sqlatd1 = fsql.Update<AsTableLog>().SetSource(testitems[0]);
var sqlatd101 = sqlatd1.ToSql();
var sqlatd102 = sqlatd1.ExecuteAffrows();
var sqlatd2 = fsql.Update<AsTableLog>().SetSource(testitems[5]);
var sqlatd201 = sqlatd2.ToSql();
var sqlatd202 = sqlatd2.ExecuteAffrows();
var sqlatd3 = fsql.Update<AsTableLog>().SetSource(testitems);
var sqlatd301 = sqlatd3.ToSql();
var sqlatd302 = sqlatd3.ExecuteAffrows();
var sqlatd4 = fsql.Update<AsTableLog>(Guid.NewGuid()).Set(a => a.msg == "newmsg");
var sqlatd401 = sqlatd4.ToSql();
var sqlatd402 = sqlatd4.ExecuteAffrows();
var sqlatd5 = fsql.Update<AsTableLog>(Guid.NewGuid()).Set(a => a.msg == "newmsg").Where(a => a.createtime.Between(DateTime.Parse("2022-3-1"), DateTime.Parse("2022-5-1")));
var sqlatd501 = sqlatd5.ToSql();
var sqlatd502 = sqlatd5.ExecuteAffrows();
var sqlatd6 = fsql.Update<AsTableLog>(Guid.NewGuid()).Set(a => a.msg == "newmsg").Where(a => a.createtime > DateTime.Parse("2022-3-1") && a.createtime < DateTime.Parse("2022-5-1"));
var sqlatd601 = sqlatd6.ToSql();
var sqlatd602 = sqlatd6.ExecuteAffrows();
var sqlatd7 = fsql.Update<AsTableLog>(Guid.NewGuid()).Set(a => a.msg == "newmsg").Where(a => a.createtime > DateTime.Parse("2022-3-1"));
var sqlatd701 = sqlatd7.ToSql();
var sqlatd702 = sqlatd7.ExecuteAffrows();
var sqlatd8 = fsql.Update<AsTableLog>(Guid.NewGuid()).Set(a => a.msg == "newmsg").Where(a => a.createtime < DateTime.Parse("2022-5-1"));
var sqlatd801 = sqlatd8.ToSql();
var sqlatd802 = sqlatd8.ExecuteAffrows();
var sqlatd12 = fsql.InsertOrUpdate<AsTableLog>().SetSource(testitems[0]);
var sqlatd1201 = sqlatd12.ToSql();
var sqlatd1202 = sqlatd12.ExecuteAffrows();
var sqlatd22 = fsql.InsertOrUpdate<AsTableLog>().SetSource(testitems[5]);
var sqlatd2201 = sqlatd22.ToSql();
var sqlatd2202 = sqlatd22.ExecuteAffrows();
var sqlatd32 = fsql.InsertOrUpdate<AsTableLog>().SetSource(testitems);
var sqlatd3201 = sqlatd32.ToSql();
var sqlatd3202 = sqlatd32.ExecuteAffrows();
var sqls1 = fsql.Select<AsTableLog>().OrderBy(a => a.createtime).Limit(10);
var sqls101 = sqls1.ToSql();
var sqls102 = sqls1.ToList();
var sqls2 = fsql.Select<AsTableLog>().Where(a => a.createtime.Between(DateTime.Parse("2022-3-1"), DateTime.Parse("2022-5-1")));
var sqls201 = sqls2.ToSql();
var sqls202 = sqls2.ToList();
var sqls3 = fsql.Select<AsTableLog>().Where(a => a.createtime > DateTime.Parse("2022-3-1") && a.createtime < DateTime.Parse("2022-5-1"));
var sqls301 = sqls3.ToSql();
var sqls302 = sqls3.ToList();
var sqls4 = fsql.Select<AsTableLog>().Where(a => a.createtime > DateTime.Parse("2022-3-1"));
var sqls401 = sqls4.ToSql();
var sqls402 = sqls4.ToList();
var sqls5 = fsql.Select<AsTableLog>().Where(a => a.createtime < DateTime.Parse("2022-5-1"));
var sqls501 = sqls5.ToSql();
var sqls502 = sqls5.ToList();
var sqls6 = fsql.Select<AsTableLog>().Where(a => a.createtime < DateTime.Parse("2022-5-1")).Limit(10).OrderBy(a => a.createtime);
var sqls601 = sqls6.ToSql();
var sqls602 = sqls6.ToList();
var sqls7 = fsql.Select<AsTableLog>().Where(a => a.createtime < DateTime.Parse("2022-5-1")).ToAggregate(g => new
{
sum1 = g.Sum(g.Key.click),
cou1 = g.Count(),
avg1 = g.Avg(g.Key.click),
min = g.Min(g.Key.click),
max = g.Max(g.Key.click)
});
var x01sql01 = fsql.Select<Main1>()
.Include(a => a.Test1)
.Include(a => a.Test2)
.Include(a => a.Test3)
.ToSql();
var txxx01 = fsql.Select<User1>()
.WhereDynamicFilter(new DynamicFilterInfo
{
Field = nameof(User1.CreateTime),
Operator = DynamicFilterOperator.DateRange,
Value = $"{DateTime.MinValue.ToString("yyyy-MM-dd")},{DateTime.MinValue.ToString("yyyy-MM-dd")}"
})
.ToSql();
var updatejoin031sql = fsql.Update<User1>()
.Join<UserGroup>(fsql.Select<UserGroup>().Where(a => a.GroupName == "xxx"), (a, b) => a.GroupId == b.Id)
.AsTable("t1", null)
.Set((a, b) => b.GroupName == a.Username + "b.groupname")
.ToSql();
fsql.CodeFirst.Entity<B11>(e =>
{
e.Help().Navigate(b => b.a, nameof(B11.Id));
});
fsql.CodeFirst.Entity<A11>(e => { });
var a11sql01 = fsql.Select<B11>().Where(a => a.Id == 1).ToSql(a => new { a.Name, AName = a.a.Name });
var risWorkListRepo = fsql.GetRepository<EBH_RisWorkList>();
risWorkListRepo.InsertOrUpdate(new EBH_RisWorkList
{
RequisitionID = "xxx"
});
var tqq01 = fsql.Select<User1>().Where(a => a.IsDeleted || a.IsDeleted || a.IsDeleted).ToSql();
fsql.GlobalFilter.Apply<User1>("test01", a => a.IsDeleted == false);
fsql.UseJsonMap();
fsql.Select<MiDevice>().Where(a => a.FormLocking == null).Count();
fsql.Delete<TypeHandler01>().Where("1=1").ExecuteAffrows();
FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(TestIdAndIdentity), new String_TestIdAndIdentity());
fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 101, IdentityId = 10101 } }).ExecuteAffrows();
fsql.Insert(new TypeHandler01 { id = Guid.NewGuid(), json = new TestIdAndIdentity { Id = 102, IdentityId = 10202 } }).ExecuteAffrows();
var th01s = fsql.Select<TypeHandler01>().ToList();
th01s[0].json = new TestIdAndIdentity { Id = 101, IdentityId = 101011111 };
fsql.Update<TypeHandler01>().SetSource(th01s[0]).ExecuteAffrows();
var th01s2 = fsql.Select<TypeHandler01>().ToList();
var th01s1json = new TestIdAndIdentity { Id = 101, IdentityId = 33333333 };
fsql.Update<TypeHandler01>().Set(a => new
{
json = th01s1json
}).Where(a => a.id == th01s[0].id).ExecuteAffrows();
var th01s3 = fsql.Select<TypeHandler01>().ToList();
var bulkUsers = new[] {
new IdentityUser1 { Nickname = "nickname11", Username = "username11" },
new IdentityUser1 { Nickname = "nickname12", Username = "username12" },
new IdentityUser1 { Nickname = "nickname13", Username = "username13" },
new IdentityUser1 { Nickname = "nickname21", Username = "username21" },
new IdentityUser1 { Nickname = "nickname22", Username = "username22" },
new IdentityUser1 { Nickname = "nickname23", Username = "username23" }
};
fsql.Insert(bulkUsers).NoneParameter().ExecuteAffrows();
fsql.Insert(bulkUsers).IgnoreInsertValueSql(a => a.Nickname).NoneParameter().ExecuteAffrows();
bulkUsers = fsql.Select<IdentityUser1>().OrderByDescending(a => a.Id).Limit(3).ToList().ToArray();
bulkUsers[0].Nickname += "_bulkupdate";
bulkUsers[1].Nickname += "_bulkupdate";
bulkUsers[2].Nickname += "_bulkupdate";
fsql.Update<IdentityUser1>().SetSource(bulkUsers).ExecuteSqlBulkCopy();
var testr1 = fsql.Ado.ExecuteConnectTest();
var dict = new List<Dictionary<string, object>>();
Dictionary<string, object> d = new Dictionary<string, object>();
d.Add("id", 2);
d.Add("name", "name2");
dict.Add(d);
var testx01 = fsql.InsertOrUpdateDict(dict).AsTable("table222zzz").WherePrimary("id").IfExistsDoNothing().ToSql();
fsql.InsertOrUpdateDict(dict).AsTable("table222zzz").WherePrimary("id").IfExistsDoNothing().ExecuteAffrows();
var xxxc1 = User1.Select.ToSql(a => new
{
count = User1.Where(b => b.Id == a.Id).Count()
});
var tididentity = fsql.CodeFirst.GetTableByEntity(typeof(TestIdAndIdentity));
var tididDDL = fsql.CodeFirst.GetComparisonDDLStatements(typeof(TestIdAndIdentity));
var lstKafka = fsql.Ado.Query<ProducerModel_Kafka>("SELECT 123 AS ID,'10.0.0.0' AS IP FROM dual ");
var subsql01 = fsql.Select<User1>().Where(a =>
fsql.Select<UserGroup>().Where(b => b.Id == a.GroupId).Max(b => b.CreateTime) > DateTime.Now)
.ToSql();
var cccsql1 = fsql.Select<CCC>().Page(1, 10).ToSql();
var cccsql2 = fsql.Select<CCC>().Page(2, 10).ToSql();
new Products
{
title = "one plus pro"
}.Save();
using (var uow = fsql.CreateUnitOfWork())
{
uow.Orm.Select<User1>().Where(a => a.Nickname == "xxx").ToDelete().ExecuteAffrows();
}
var mur1 = fsql.Select<UserGroup>().Limit(10).ToList(a => new
{
group = a,
users = fsql.Select<User1>()
.Where(b => b.GroupId == a.Id)
.OrderBy(b => b.Username)
.OrderByDescending(b => b.Nickname)
.ToList()
});
test_pgsql(fsql);
var sqliteConnection = new Microsoft.Data.Sqlite.SqliteConnection("data source=123.db");
using(var sqliteSql = new FreeSqlBuilder()
.UseConnectionFactory(DataType.Sqlite,() => sqliteConnection)
.UseAutoSyncStructure(true)
.UseMonitorCommand(cmd => Console.WriteLine(cmd.CommandText))
.Build())
{
sqliteSql.Insert(new User1 { Avatar = "xxxavatar" }).ExecuteAffrows();
var xkdkd = sqliteSql.Select<User1>().ToList();
}
var qr1 = fsql.SelectLongSequence(10, () => new
{
rndstr = QuestFunc.rnd_str(10, 5, 10, 0),
rnddate = QuestFunc.rnd_date(QuestFunc.to_date("2020", "yyyy"), QuestFunc.to_date("2023", "yyyy")),
test1 = TaskStatus.Canceled.ToString()
})
.From<User1>()
.InnerJoin((a, b) => a.rndstr == b.Username).ToList();
;
fsql.Aop.ParseExpression += (_, e) =>
{
if (fsql.Ado.DataType == DataType.PostgreSQL)
{
if (e.Expression is MethodCallExpression callExp &&
callExp.Object is not null && typeof(Geometry).IsAssignableFrom(callExp.Method.DeclaringType))
{
var instance = callExp.Object;
var arguments = callExp.Arguments;
var Function = new Func<string, Expression[], Type, string>((dbfunc, args, returnType) =>
{
var inputArgs = string.Join(", ", args.Select(a =>
{
//var testParse = fsql.Aop.ParseExpressionHandler(fsql, new FreeSql.Aop.ParseExpressionEventArgs(a, e.FreeParse, e.Tables));
return e.FreeParse(a);
}));
return $"{dbfunc}({inputArgs})";
});
e.Result = callExp.Method.Name switch
{
nameof(Geometry.AsBinary) => Function("ST_AsBinary", new[] { instance }, typeof(byte[])),
nameof(Geometry.AsText) => Function("ST_AsText", new[] { instance }, typeof(string)),
nameof(Geometry.Buffer) => Function("ST_Buffer", new[] { instance }.Concat(arguments).ToArray(), typeof(Geometry)),
nameof(Geometry.Contains) => Function("ST_Contains", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.ConvexHull) => Function("ST_ConvexHull", new[] { instance }, typeof(Geometry)),
nameof(Geometry.CoveredBy) => Function("ST_CoveredBy", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.Covers) => Function("ST_Covers", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.Crosses) => Function("ST_Crosses", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.Disjoint) => Function("ST_Disjoint", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.Difference) => Function("ST_Difference", new[] { instance, arguments[0] }, typeof(Geometry)),
nameof(Geometry.Distance) => Function("ST_Distance", new[] { instance }.Concat(arguments).ToArray(), typeof(double)),
nameof(Geometry.EqualsExact) => Function("ST_OrderingEquals", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.EqualsTopologically) => Function("ST_Equals", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.GetGeometryN) => Function("ST_GeometryN", new[] { instance, arguments[0] }, typeof(Geometry)),
nameof(Polygon.GetInteriorRingN) => Function("ST_InteriorRingN", new[] { instance, arguments[0] }, typeof(Geometry)),
nameof(LineString.GetPointN) => Function("ST_PointN", new[] { instance, arguments[0] }, typeof(Geometry)),
nameof(Geometry.Intersection) => Function("ST_Intersection", new[] { instance, arguments[0] }, typeof(Geometry)),
nameof(Geometry.Intersects) => Function("ST_Intersects", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.IsWithinDistance) => Function("ST_DWithin", new[] { instance }.Concat(arguments).ToArray(), typeof(bool)),
nameof(Geometry.Normalized) => Function("ST_Normalize", new[] { instance }, typeof(Geometry)),
nameof(Geometry.Overlaps) => Function("ST_Overlaps", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.Relate) => Function("ST_Relate", new[] { instance, arguments[0], arguments[1] }, typeof(bool)),
nameof(Geometry.Reverse) => Function("ST_Reverse", new[] { instance }, typeof(Geometry)),
nameof(Geometry.SymmetricDifference) => Function("ST_SymDifference", new[] { instance, arguments[0] }, typeof(Geometry)),
nameof(Geometry.ToBinary) => Function("ST_AsBinary", new[] { instance }, typeof(byte[])),
nameof(Geometry.ToText) => Function("ST_AsText", new[] { instance }, typeof(string)),
nameof(Geometry.Touches) => Function("ST_Touches", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.Within) => Function("ST_Within", new[] { instance, arguments[0] }, typeof(bool)),
nameof(Geometry.Union) when arguments.Count == 0 => Function("ST_UnaryUnion", new[] { instance }, typeof(Geometry)),
nameof(Geometry.Union) when arguments.Count == 1 => Function("ST_Union", new[] { instance, arguments[0] }, typeof(Geometry)),
_ => null
};
}
}
};
if (fsql.Ado.DataType == DataType.PostgreSQL)
{
Npgsql.NpgsqlConnection.GlobalTypeMapper.UseNetTopologySuite();
var geo = new Point(10, 20);
var xxx = fsql.Select<City>()
.Where(a => geo.GetGeometryN(0).Distance(a.Center) < 100).ToSql();
}
var now_to_timezone = "";
var timeOffset = (int)DateTime.Now.Subtract(DateTime.UtcNow).TotalMinutes;
if (timeOffset == 0) now_to_timezone = "systimestamp()";
else
{
var absTimeOffset = Math.Abs(timeOffset);
now_to_timezone = $"to_timezone(systimestamp(),'{(timeOffset > 0 ? '+' : '-')}{(absTimeOffset / 60).ToString().PadLeft(2, '0')}:{(absTimeOffset % 60).ToString().PadLeft(2, '0')}')";
}
if (now_to_timezone != "to_timezone(systimestamp(),'+08:00')") throw new Exception("questdb DateTime.Now 时差计算错误");
fsql.Insert(new[]
{
new pgjson_copy001{ json = JObject.FromObject(new {x=1,y=2 })},
new pgjson_copy001{ json = JObject.FromObject(new {x=1,y=2 })},
new pgjson_copy001{ json = JObject.FromObject(new {x=1,y=2 })},
new pgjson_copy001{ json = JObject.FromObject(new {x=1,y=2 })},
}).ExecutePgCopy();
fsql.CodeFirst.GetTableByEntity(typeof(MFUser)).GetTableRef(nameof(MFUser.ExtInfo), true);
fsql.Delete<MFUser>().Where(a => true).ExecuteAffrows();
fsql.Delete<MFUserExt>().Where(a => true).ExecuteAffrows();
fsql.Delete<MFToken>().Where(a => true).ExecuteAffrows();
fsql.Insert(new MFUser { Id = "1", Name = "user1", Pd = "pd1" }).ExecuteAffrows();
fsql.Insert(new MFUserExt { MFUserId = "1", Addr = "addr1", Phone = "phone1" }).ExecuteAffrows();
fsql.Insert(new MFToken { MFUserId = "1", EndTime = DateTime.Now.AddDays(1), Source = "source1", Token = "token1" }).ExecuteAffrows();
var user = fsql.Select<MFUser>()
.Include(a => a.ExtInfo)
.InnerJoin<MFToken>((a, b) => a.Id == b.MFUserId)
.First();
var sqlastable1 = fsql.Select<CurrentDetail>(101).AsTable((t, o) => "current_detail_230501").ToSql();
var sqlastable2 = fsql.Update<CurrentDetail>(101).AsTable("current_detail_230501").Set(t => t.StatuId, 1).ToSql();
var sqlastable3 = fsql.Delete<CurrentDetail>(101).AsTable("current_detail_230501").ToSql();
var iouSetSql01 = fsql.InsertOrUpdate<User1>()
.SetSource(Enumerable.Range(0, 5).Select(a => new User1 { Id = Guid.NewGuid(), Nickname = $"nickname{a}", Username = $"username{a}", Description = $"desc{a}" }).ToArray())
.UpdateSet((a, b) => a.Sort == b.Sort + 10)
.UpdateSet((a, b) => a.Nickname == "xxx")
.ToSql();
fsql.Delete<OracleLongRaw1>().Where("1=1").ExecuteAffrows();
var longRawData = Encoding.UTF8.GetBytes(string.Join(",", Enumerable.Range(1, 2000).Select(a => "中国人")));
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(false).ExecuteAffrows();
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(true).ExecuteAffrows();
var longRaw1 = fsql.Select<OracleLongRaw1>().ToList();
MarketingRestrictions restrictions = new MarketingRestrictions();
if (restrictions.Id == Guid.Empty)
{
restrictions.CreatedBy = 100;
}
else
{
restrictions.UpdatedBy = 100;
restrictions.UpdatedTime = DateTime.Now;
}
int ret = fsql.InsertOrUpdate<MarketingRestrictions>()
.SetSource(restrictions)
.UpdateColumns(r => new {
r.Describe,
r.IsLimitUsePoints,
r.Status,
r.StartTime,
r.EndTime,
r.UpdatedBy,
r.UpdatedTime
})
.ExecuteAffrows();
var query2222 = fsql.Select<Student2222>()
.AsTable((t, o) => string.Format(o, "hash2"))
.Where(p => p.Name.Contains("search"))
.GroupBy(a => new { a.ClassId })
.WithTempQuery(a => a.Key);
var sql11111 = fsql.Select<Class1111>()
.AsTable((t, o) => string.Format(o, "hash1"))
.Where(s => query2222
.ToList(p => p.ClassId)
.Contains(s.Id))
.ToSql(s => new
{
s.Id,
s.Name,
});
var isusers01 = fsql.Select<Achievement>()
.Where(e => e.Property("项目执行情况") == "结题")
.GroupBy(e => new { ProjectLevel = e.Property("项目级别") })
.ToSql(e => new
{
e.Key.ProjectLevel,
Test = e.Value.Group.Property("批准经费总额(万元)"),
});
isusers01 = fsql.Select<Achievement>()
.Where(e => e.Property("项目执行情况") == "结题")
.GroupBy(e => new { ProjectLevel = e.Property("项目级别") })
.WithTempQuery(e => new
{
e.Key.ProjectLevel,
Test = e.Value.Group.Property("批准经费总额(万元)"),
})
.ToSql();
var objtsql1 = fsql.Select<object>().WithSql("select * from user1").ToList();
var objtsql2 = fsql.Select<object>().WithSql("select * from user1").ToList<User1>();
var usergroupRepository = fsql.GetAggregateRootRepository<UserGroup>();
usergroupRepository.Delete(a => true);
usergroupRepository.Insert(new[]{
new UserGroup
{
CreateTime = DateTime.Now,
GroupName = "group1",
UpdateTime = DateTime.Now,
Sort = 1,
User1s = new List<User1>
{
new User1 { Nickname = "nickname11", Username = "username11", Description = "desc11" },
new User1 { Nickname = "nickname12", Username = "username12", Description = "desc12" },
new User1 { Nickname = "nickname13", Username = "username13", Description = "desc13" },
}
},
new UserGroup
{
CreateTime = DateTime.Now,
GroupName = "group2",
UpdateTime = DateTime.Now,
Sort = 2,
User1s = new List<User1>
{
new User1 { Nickname = "nickname21", Username = "username21", Description = "desc21" },
new User1 { Nickname = "nickname22", Username = "username22", Description = "desc22" },
new User1 { Nickname = "nickname23", Username = "username23", Description = "desc23" },
}
},
});
var ugroupFirst = usergroupRepository.Select.First();
ugroupFirst.Sort++;
usergroupRepository.Update(ugroupFirst);
var userRepository = fsql.GetAggregateRootRepository<User1>();
var testsublist1 = fsql.Select<UserGroup>()
.First(a => new
{
a.Id,
list = userRepository.Select.Where(b => b.GroupId == a.Id).ToList(),
list2 = userRepository.Select.Where(b => b.GroupId == a.Id).ToList(b => b.Nickname),
});
//fsql.CodeFirst.GetTableByEntity(typeof(User1)).Columns.Values.ToList().ForEach(col =>
//{
// col.Comment = "";
//});
fsql.Insert(Enumerable.Range(0, 100).Select(a => new User1 { Id = Guid.NewGuid(), Nickname = $"nickname{a}", Username = $"username{a}", Description = $"desc{a}" }).ToArray()).ExecuteAffrows();
fsql.InsertOrUpdate<User1>()
.SetSource(fsql.Select<User1>().ToList())
.ExecuteMySqlBulkCopy();
var updatejoin01 = fsql.Update<User1>()
.Join(fsql.Select<UserGroup>(), (a, b) => a.GroupId == b.Id)
.Set((a, b) => a.Nickname == b.GroupName)
.ExecuteAffrows();
var updatejoin02 = fsql.Update<User1>()
.Join<UserGroup>((a, b) => a.GroupId == b.Id)
.Set((a, b) => a.Nickname == b.GroupName)
.ExecuteAffrows();
var updatejoin03 = fsql.Update<User1>()
.Join<UserGroup>((a, b) => a.GroupId == b.Id)
.Set((a, b) => a.Nickname == "b.groupname")
.ExecuteAffrows();
var xp = new Xpb()
{
Id = "L23035555",
UploadTime = DateTime.Now,
Bytes = Convert.FromBase64String("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FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9k=")
};
fsql.InsertOrUpdate<Xpb>().SetSource(xp).ExecuteAffrows();
var xpsql01 = fsql.InsertOrUpdateDict(new Dictionary<string, object>
{
[""] = "Xpb",
["ID"] = "L230355551",
["UPLOAD_TIME"] = DateTime.Now,
["XP"] = Convert.FromBase64String("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FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9k=")
}).WherePrimary("Id").ExecuteAffrows();
fsql.Select<User1>().IncludeMany(a => a.Roles);
var displayNameTb = fsql.CodeFirst.GetTableByEntity(typeof(DeviceCodes));
var joinsql1 = fsql.Select<JoinTest01>()
.Include(a => a.Parent.Parent)
.Where(a => a.Parent.Parent.code == "001")
.Where(a => a.JoinTest01Enum == JoinTest01Enum.f3.ToString())
.Where(a => object.Equals(a.JoinTest01Enum, JoinTest01Enum.f3))
.Where(a => new[] { JoinTest01Enum.f2, JoinTest01Enum.f3 }.Contains(a.JoinTest01Enum2))
.ToSql();
var atimpl = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog))
.AsTableImpl;
atimpl.GetTableNameByColumnValue(DateTime.Parse("2023-7-1"), autoExpand: true);
//var dywhere = new DynamicFilterInfo { Field = "AspNetRoless.Name", Operator = DynamicFilterOperator.Equal, Value = "Admin" };
//var method = typeof(ISelect<object>).GetMethod("WhereDynamicFilter");
//var users4 = fsql.Select<AspNetUsers>().IncludeByPropertyName("AspNetUserRoless", then => then.WhereDynamicFilter(dywhere)).ToList();
var type = typeof(Student);
var sw111 = fsql.Queryable<object>()
.AsType(type)
.Where(s => (s as BaseEntity2).Id == 1)
.ToSql();
Console.WriteLine(sw111);
var testsql01 = fsql.Select<User1>()
//.GroupBy(a => new { a.Avatar, a.GroupId })
//.Having(g => g.Sum(g.Value.Sort) > 0)
.WithTempQuery(a => new
{
a.Avatar, a.GroupId, sum1 = SqlExt.Sum(a.Sort).ToValue()
})
.Where(a => a.sum1 > 0)
.ToSql();
var items = new List<User1>();
for (var a = 0; a < 3; a++) items.Add(new User1 { Id = Guid.NewGuid(), Avatar = $"avatar{a}" });
var sqltest01 = fsql.Update<User1>()
.SetSource(items)
.UpdateColumns(a => a.Avatar)
.Set(a => a.Sort + 1).ToSql();
//VersionBytes(fsql);
fsql.Delete<TJson01>().Where(a => true).ExecuteAffrows();
fsql.Insert(new TJson01
{
Json02 = new DJson02 { code = "002", name = "name002", parentcode = "002_parent" },
Json03 = new DJson02 { code = "003", name = "name003", parentcode = "003_parent" },
}).NoneParameter(false).ExecuteAffrows();
var tjson01 = fsql.Select<TJson01>().First();
fsql.Delete<TJson02>().Where(a => true).ExecuteAffrows();
fsql.Insert(new TJson02
{
Json02 = new DJson02 { code = "0022", name = "name0022", parentcode = "0022_parent" },
}).NoneParameter(false).ExecuteAffrows();
var tjson02 = fsql.Select<TJson02>().First();
var sqlv01 = fsql.Select<BaseDataEntity>().AsType(typeof(GoodsData))
.ToSql(v => new GoodsDataDTO()
{
Id = v.Id,
GoodsNo = v.Code,
GoodsName = v.Name,
});
// 解析会连带导出 CategoryId ,但是如果查询别名不是 a 时就会重置到基类表
// SELECT a.`CategoryId` as1, v.`Id` as2, v.`Code` as3, v.`Name` as4
// FROM `FreeSqlTest`.`bdd_1` a, `BaseDataEntity` v
var groupsql01 = fsql.Select<User1>()
.GroupBy(a => new
{
djjg = a.Id,
qllx = a.Nickname,
hjhs = a.GroupId
})
.ToSql(g => new
{
g.Key.djjg,
g.Key.qllx,
xhjsl = g.Count(g.Key.djjg),
hjzhs = g.Sum(g.Key.hjhs),
blywsl = g.Count()
}, FieldAliasOptions.AsProperty);
using (var uow = fsql.CreateUnitOfWork())
{
uow.Orm.Select<User1>().ForUpdate().ToList();
}
var listaaaddd = new List<User1>();
for (int i = 0; i < 2; i++)
{
listaaaddd.Add(new User1 { Nickname = $"测试文本:{i}" });
}
fsql.Select<User1>();
fsql.Transaction(() =>
{
fsql.Insert(listaaaddd).ExecuteAffrows(); //加在事务里就出错
});
fsql.Select<IdentityTable>().Count();
var dkdksql = fsql.Select<User1>().WithLock().From<UserGroup>()
.InnerJoin<UserGroup>((user, usergroup) => user.GroupId == usergroup.Id && usergroup.GroupName == "xxx")
.ToSql();
//Func<string> getName1 = () => "xxx";
//fsql.GlobalFilter.Apply<User1>("fil1", a => a.Nickname == getName1());
//var gnsql2 = fsql.Select<User1>().ToSql();
using (var ctx9 = fsql.CreateDbContext())
{
//var uset = ctx9.Set<UserGroup>();
//var item = new UserGroup
//{
// GroupName = "group1"
//};
//uset.Add(item);
//item.GroupName = "group1_2";
//uset.Update(item);
var uset = ctx9.Set<User1>();
var item = new User1
{
Nickname = "nick1",
Username = "user1"
};
uset.Add(item);
item.Nickname = "nick1_2";
item.Username = "user1_2";
uset.Update(item);
ctx9.SaveChanges();
}
var strs = new string[] { "a", "b", "c" };
var strssql1 = fsql.Select<User1>().Where(a => strs.Any(b => b == a.Nickname)).ToSql();
var strssql2 = fsql.Select<User1>().Where(a => strs.Any(b => a.Nickname.Contains(b))).ToSql();
var objs = new UserGroup[] { new UserGroup { GroupName = "a", Id = 1 }, new UserGroup { GroupName = "b", Id = 2 }, new UserGroup { GroupName = "c", Id = 3 } };
var objssql1 = fsql.Select<User1>().Where(a => objs.Any(b => b.GroupName == a.Nickname && b.Id == a.GroupId)).ToSql();
var tttsqlext01 = fsql.Select<User1>().ToSql(a => new
{
cou = SqlExt.Count(1).Over().PartitionBy(a.Id).ToValue(),
avg = SqlExt.Avg(1).Over().PartitionBy(a.Id).ToValue()
});
//fsql.CodeFirst.SyncStructure<SqliteAAA>();
fsql.CodeFirst.Entity<JoinTest01>(a => a.Property(p => p.code).IsRequired());
var repo1010 = fsql.GetRepository<JoinTest01>();
var jtitem = new JoinTest01 { id = 100 };
repo1010.Attach(jtitem);
jtitem.name = "name01";
repo1010.Update(jtitem);
var sqlt0a1 = fsql.InsertOrUpdate<>()
.SetSource(new
{
ID = 1,
= "NIKE",
})
.ToSql();
fsql.UseMessagePackMap();
fsql.Delete<MessagePackMapInfo>().Where("1=1").ExecuteAffrows();
fsql.Insert(new MessagePackMapInfo { id = Guid.NewGuid(), Info = new MessagePackMap01 { name = "0023 中国国家1", address = "001address" } }).ExecuteAffrows();
var rem1 = fsql.Select<MessagePackMapInfo>().ToList();
var result1x = fsql.Ado.QuerySingle(() => new
{
DateTime.Now,
DateTime.UtcNow,
Math.PI
});
var testsublist2 = fsql.Select<UserGroup>()
.GroupBy(a => new { a.Id })
.WithTempQuery(a => a.Key)
.First(a => new
{
id = a,
list = userRepository.Select.Where(b => b.GroupId == a.Id).ToList(),
list2 = userRepository.Select.Where(b => b.GroupId == a.Id).ToList(b => b.Nickname),
});
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("id", 1);
dic.Add("name", "xxxx");
dic.Add("rowVersion", 100);
var diclist = new List<Dictionary<string, object>>();
diclist.Add(dic);
diclist.Add(new Dictionary<string, object>
{
["id"] = 2,
["name"] = "123,1234,123444",
["rowVersion"] = 1
});
var sqss = fsql.InsertDict(dic).AsTable("table1").ToSql();
var sqss2 = fsql.InsertDict(diclist).AsTable("table1").ToSql();
sqss = fsql.InsertDict(dic).AsTable("table1").NoneParameter().ToSql();
sqss2 = fsql.InsertDict(diclist).AsTable("table1").NoneParameter().ToSql();
dic["xxx"] = null;
dic["yyy"] = 111;
var sqlupd1 = fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").ToSql();
var sqlupd2 = fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").ToSql();
var sqlupd11 = fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").NoneParameter(false).ToSql();
var sqlupd22 = fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").NoneParameter(false).ToSql();
var sqlupd111 = fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").IsVersion("rowVersion").NoneParameter(false).ToSql();
var sqlupd221 = fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").IsVersion("rowVersion").NoneParameter(false).ToSql();
//fsql.UpdateDict(dic).AsTable("table1").WherePrimary("id").IsVersion("rowVersion").NoneParameter(false).ExecuteAffrows();
//fsql.UpdateDict(diclist).AsTable("table1").WherePrimary("id").IsVersion("rowVersion").NoneParameter(false).ExecuteAffrows();
var sqldel1 = fsql.DeleteDict(dic).AsTable("table1").ToSql();
var sqldel2 = fsql.DeleteDict(diclist).AsTable("table1").ToSql();
diclist[1]["title"] = "newtitle";
var sqldel3 = fsql.DeleteDict(diclist).AsTable("table1").ToSql();
diclist.Clear();
diclist.Add(new Dictionary<string, object>
{
["id"] = 1
});
diclist.Add(new Dictionary<string, object>
{
["id"] = 2
});
var sqldel4 = fsql.DeleteDict(diclist).AsTable("table1").ToSql();
fsql.Aop.ConfigEntity += (_, e) =>
{
Console.WriteLine("Aop.ConfigEntity: " + e.ModifyResult.Name);
e.ModifyIndexResult.Add(new IndexAttribute("xxx2", "aa", true));
};
fsql.Aop.ConfigEntityProperty += (_, e) =>
{
Console.WriteLine("Aop.ConfigEntityProperty: " + e.ModifyResult.Name);
};
fsql.CodeFirst.ConfigEntity<AAA>(t =>
{
t.Name("AAA_fluentapi");
t.Property(a => a.aa).Name("AA_fluentapi");
});
fsql.Select<AAA>();
fsql.Select<AAA>();
var sqlskdfj = fsql.Select<object>().AsType(typeof(BBB)).ToSql(a => new CCC());
var dbpars = new List<DbParameter>();
var a1id1 = Guid.NewGuid();
var a1id2 = Guid.NewGuid();
//fsql.CodeFirst.IsGenerateCommandParameterWithLambda = true;
var sql1a0 = fsql.Select<User1>()
.WithParameters(dbpars)
.Where(a => a.Id == a1id1)
.UnionAll(
fsql.Select<User1>()
.WithParameters(dbpars)
.Where(a => a.Id == a1id2),
fsql.Select<User1>()
.WithParameters(dbpars)
.Where(a => a.Id == a1id2)
)
.Where(a => a.Id == a1id1 || a.Id == a1id2)
.ToSql();
var sql1a1 = fsql.Select<User1>()
.Where(a => a.Id == a1id1)
.UnionAll(
fsql.Select<User1>()
.Where(a => a.Id == a1id2)
)
.Where(a => a.Id == a1id1 || a.Id == a1id2)
.ToSql();
var sql1a2 = fsql.Select<User1, UserGroup>()
.InnerJoin((a, b) => a.GroupId == b.Id)
.Where((a, b) => a.Id == a1id1)
.WithTempQuery((a, b) => new { user = a, group = b }) //匿名类型
.UnionAll(
fsql.Select<User1, UserGroup>()
.InnerJoin((a, b) => a.GroupId == b.Id)
.Where((a, b) => a.Id == a1id2)
.WithTempQuery((a, b) => new { user = a, group = b }) //匿名类型
)
.Where(a => a.user.Id == a1id1 || a.user.Id == a1id2)
.ToSql();
var ddlsql01 = fsql.CodeFirst.GetComparisonDDLStatements<StringNulable>();
Expression<Func<HzyTuple<User1, Group, Group, Group, Group, Group>, bool>> where = null;
where = where.Or(a => a.t6.Index > 0);
where = where.Or(a => a.t5.Index > 0);
where = where.Or(a => a.t4.Index > 0);
where = where.Or(a => a.t3.Index > 0);
where = where.Or(a => a.t2.Index > 0);
where = where.Or(a => a.t1.Nickname.Length > 0);
var sql11224333 = fsql.Select<User1, Group, Group, Group, Group, Group>().Where(where).ToSql();
fsql.UseJsonMap();
fsql.CodeFirst.ConfigEntity<TestClass>(cf =>
{
cf.Property(p => p.Name).IsNullable(false);
cf.Property(p => p.Tags).JsonMap();
});
fsql.Insert(new TestClass("test 1")
{
Tags = new[] { "a", "b" },
})
.ExecuteAffrows();
var records = fsql.Queryable<TestClass>().ToList();
InitData();
InitData();
var dates = Enumerable.Range(0, 5)
.Select(a => new DateModel { Date = DateTime.Parse("2022-08-01").AddDays(a) })
.ToArray();
var datesSql1 = fsql.Select<User1>()
.GroupBy(a => a.CreateTime.Date)
.WithTempQuery(a => new
{
date = a.Key,
sum1 = a.Sum(a.Value.Nickname.Length)
})
.FromQuery(fsql.Select<DateModel>().WithMemory(dates))
.RightJoin((a, b) => a.date == b.Date)
.ToSql();
var treeSql1 = fsql.Select<TreeModel>()
.WhereCascade(a => a.code == "xxx")
.Where(a => a.id == 123)
.AsTreeCte()
.ToSql();
var list = new List<User1>();
list.Add(new User1 { Id = Guid.NewGuid() });
list.Add(new User1 { Id = Guid.NewGuid() });
list.Add(new User1 { Id = Guid.NewGuid() });
var listSql3 = fsql.InsertOrUpdate<User1>().IfExistsDoNothing().SetSource(list).ToSql();
var listSql = fsql.Select<User1>()
.WithMemory(list)
.ToSql();
var listSql2 = fsql.Select<UserGroup>()
.FromQuery(fsql.Select<User1>().WithMemory(list))
.InnerJoin((a, b) => a.Id == b.GroupId)
.ToSql();
var listSql2Result = fsql.Select<UserGroup>()
.FromQuery(fsql.Select<User1>().WithMemory(list))
.InnerJoin((a, b) => a.Id == b.GroupId)
.ToList();
var atimpl2 = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog))
.AsTableImpl;
atimpl2.GetTableNameByColumnValue(DateTime.Parse("2023-7-1"), autoExpand: true);
fsql.Select<User1, UserGroup>()
.InnerJoin((a, b) => a.GroupId == b.Id)
.Where((a, b) => b.GroupName == "group1")
.WithTempQuery((a, b) => new
{
User = a,
GroupName = b.GroupName,
rownum = SqlExt.RowNumber().Over().PartitionBy(b.GroupName).OrderBy(a.Id).ToValue()
})
.Where(a => a.rownum == 1)
.ToList();
var sqlt1 = fsql.Select<User1>()
.ToSql(a => new
{
item = a,
rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.Id).ToValue()
}, FieldAliasOptions.AsProperty);
sqlt1 = fsql.Select<User1>()
.WithSql(sqlt1)
.Where("a.rownum = 1")
.ToSql();
var sqlt2 = fsql.Select<User1>()
.WithTempQuery(a => new
{
item = a,
rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.Id).ToValue()
})
.Where(a => a.rownum == 1)
.ToSql();
var sqlt22 = fsql.Select<User1>()
.WithTempQuery(a => new
{
item = a,
rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.Id).ToValue()
})
.Where(a => a.rownum == 1)
.ToList();
var sqlt23 = fsql.Select<User1>()
.WithTempQuery(a => new
{
item = a,
rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.Id).ToValue()
})
.Where(a => a.rownum == 1)
.ToList(a => new
{
a.item,
a.rownum
});
var sqlt24 = fsql.Select<User1>()
.GroupBy(a => new { a.Nickname })
.WithTempQuery(g => new
{
g.Key.Nickname,
sum1 = g.Sum(g.Value.Avatar.Length)
})
.Where(a => a.Nickname != null)
.ToList();
Func<string> getName = () => "xxx";
fsql.GlobalFilter.Apply<User1>("fil1", a => a.Nickname == getName());
var gnsql = fsql.Select<User1>().ToSql();
Dictionary<string, object> dic22 = new Dictionary<string, object>();
dic22.Add("id", 1);
dic22.Add("name", "xxxx");
dic22.Add("bytes", Encoding.UTF8.GetBytes("我是中国人"));
var sqlBytes = fsql.InsertDict(dic22).AsTable("table1").ToSql();
var sqlToYear = fsql.Select<User1>().ToSql(a => a.CreateTime.Year);
TestExp(fsql);
fsql.CodeFirst.GetTableByEntity(typeof(TestComment01));
fsql.Select<TUserImg>();
var srepo = new SongRepository(fsql);
var sql122234 = fsql.CodeFirst.GetComparisonDDLStatements<EnterpriseInfo>();
if (fsql.Ado.DataType == DataType.PostgreSQL)
{
fsql.CodeFirst.IsNoneCommandParameter = false;
fsql.Aop.AuditDataReader += (_, e) =>
{
var dbtype = e.DataReader.GetDataTypeName(e.Index);
var m = Regex.Match(dbtype, @"numeric\((\d+)\)", RegexOptions.IgnoreCase);
if (m.Success && int.Parse(m.Groups[1].Value) > 19)
e.Value = e.DataReader.GetFieldValue<BigInteger>(e.Index); //否则会报溢出错误
};
var num = BigInteger.Parse("57896044618658097711785492504343953926634992332820282019728792003956564819968");
fsql.Delete<tuint256tb_01>().Where("1=1").ExecuteAffrows();
if (1 != fsql.Insert(new tuint256tb_01()).ExecuteAffrows()) throw new Exception("not equal");
var find = fsql.Select<tuint256tb_01>().ToList();
if (find.Count != 1) throw new Exception("not single");
if ("0" != find[0].Number.ToString()) throw new Exception("not equal");
var item = new tuint256tb_01 { Number = num };
if (1 != fsql.Insert(item).ExecuteAffrows()) throw new Exception("not equal");
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
if (find.Count != 1) throw new Exception("not single");
if (item.Number != find[0].Number) throw new Exception("not equal");
num = num - 1;
item.Number = num;
if (1 != fsql.Update<tuint256tb_01>().SetSource(item).ExecuteAffrows()) throw new Exception("not equal");
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
if (find.Count != 1) throw new Exception("not single");
if ("57896044618658097711785492504343953926634992332820282019728792003956564819967" != find[0].Number.ToString()) throw new Exception("not equal");
num = BigInteger.Parse("57896044618658097711785492504343953926634992332820282019728792003956564819968");
fsql.Delete<tuint256tb_01>().Where("1=1").ExecuteAffrows();
if (1 != fsql.Insert(new tuint256tb_01()).NoneParameter().ExecuteAffrows()) throw new Exception("not equal");
find = fsql.Select<tuint256tb_01>().ToList();
if (find.Count != 1) throw new Exception("not single");
if ("0" != find[0].Number.ToString()) throw new Exception("not equal");
item = new tuint256tb_01 { Number = num };
if (1 != fsql.Insert(item).NoneParameter().ExecuteAffrows()) throw new Exception("not equal");
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
if (find.Count != 1) throw new Exception("not single");
if (item.Number != find[0].Number) throw new Exception("not equal");
num = num - 1;
item.Number = num;
if (1 != fsql.Update<tuint256tb_01>().NoneParameter().SetSource(item).ExecuteAffrows()) throw new Exception("not equal");
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
if (find.Count != 1) throw new Exception("not single");
if ("57896044618658097711785492504343953926634992332820282019728792003956564819967" != find[0].Number.ToString()) throw new Exception("not equal");
}
fsql.Aop.CommandBefore += (_, e) =>
{
if (CommandTimeoutCascade._asyncLocalTimeout.Value > 0)
e.Command.CommandTimeout = CommandTimeoutCascade._asyncLocalTimeout.Value;
};
using (new CommandTimeoutCascade(1000))
{
fsql.Select<Order>().ToList();
fsql.Select<Order>().ToList();
fsql.Select<Order>().ToList();
}
var sql1 = fsql.Select<User1, UserGroup>()
.RawJoin("FULL JOIN UserGroup b ON b.id = a.GroupId")
.Where((a, b) => a.IsDeleted == false)
.ToSql((a, b) => new
{
user = a,
group = b
});
sql1 = sql1.Replace("INNER JOIN ", "FULL JOIN ");
var tinc01 = fsql.Select<UserGroup>().IncludeMany(a => a.User1s.Where(b => b.GroupId == a.Id)).ToList();
fsql.CodeFirst.IsGenerateCommandParameterWithLambda = true;
var tsub01 = fsql.Select<UserGroup>()
.ToList(a => new
{
users1 = fsql.Select<User1>().Where(b => b.GroupId == a.Id).ToList(),
users2 = fsql.Select<User1>().Where(b => b.GroupId == a.Id).ToList(b => new
{
userid = b.Id,
username = b.Username,
users11 = fsql.Select<User1>().Where(c => c.GroupId == a.Id).ToList(),
users22 = fsql.Select<User1>().Where(c => c.GroupId == a.Id).ToList(c => new
{
userid = c.Id,
username = c.Username,
}),
groups11 = fsql.Select<UserGroup>().Where(c => c.Id == b.GroupId).ToList(),
groups22 = fsql.Select<UserGroup>().Where(c => c.Id == b.GroupId).ToList(c => new
{
c.Id,
c.GroupName,
username = b.Username,
})
}),
users3 = fsql.Select<User1>().Limit(10).ToList(),
users4 = fsql.Select<User1>().Limit(10).ToList(b => new
{
userid = b.Id,
username = b.Username
})
//users3 = fsql.Ado.Query<User1>("select * from user1 where groupid = @id", new { id = a.Id })
});
var typs = fsql.Select<User1>();
var typs2 = typeof(ISelect<User1>).GetInterfaces().SelectMany(a => a.GetMethods().Where(b => b.Name == "ToListAsync")).ToArray();
var tsub02 = fsql.Select<UserGroup>()
.ToListAsync(a => new
{
users1 = fsql.Select<User1>().Where(b => b.GroupId == a.Id).ToList(),
users2 = fsql.Select<User1>().Where(b => b.GroupId == a.Id).ToList(b => new
{
userid = b.Id,
username = b.Username,
users11 = fsql.Select<User1>().Where(c => c.GroupId == a.Id).ToList(),
users22 = fsql.Select<User1>().Where(c => c.GroupId == a.Id).ToList(c => new
{
userid = c.Id,
username = c.Username,
}),
groups11 = fsql.Select<UserGroup>().Where(c => c.Id == b.GroupId).ToList(),
groups22 = fsql.Select<UserGroup>().Where(c => c.Id == b.GroupId).ToList(c => new
{
c.Id,
c.GroupName,
username = b.Username,
})
}),
users3 = fsql.Select<User1>().Limit(10).ToList(),
users4 = fsql.Select<User1>().Limit(10).ToList(b => new
{
userid = b.Id,
username = b.Username
})
//users3 = fsql.Ado.Query<User1>("select * from user1 where groupid = @id", new { id = a.Id })
}).Result;
fsql.UseJsonMap();
//var txt1 = fsql.Ado.Query<(string, string)>("select '꧁꫞꯭丑小鸭꫞꧂', '123123中国人' from dual");
fsql.Insert(new Order { ShippingAddress = "'꧁꫞꯭丑小鸭꫞꧂'" }).ExecuteAffrows();
fsql.Insert(new Order { ShippingAddress = "'123123中国人'" }).ExecuteAffrows();
var lst1 = fsql.Select<Order>().ToList();
var lst2 = fsql.Select<Order>().ToListIgnore(a => new
{
a.ShippingAddress
});
fsql.Delete<TopicMapTypeToListDto>().Where("1=1").ExecuteAffrows();
fsql.Insert(new[]
{
new TopicMapTypeToListDto{
Clicks = 100,
Title = "testMapTypeTitle1",
CouponIds = new List<int> { 1, 2, 3, 4 }
},
new TopicMapTypeToListDto{
Clicks = 101,
Title = "testMapTypeTitle2",
CouponIds = new List<int> { 1, 2, 3, 1 }
},
new TopicMapTypeToListDto{
Clicks = 102,
Title = "testMapTypeTitle3",
CouponIds = new List<int> { 1 }
},
new TopicMapTypeToListDto{
Clicks = 103,
Title = "testMapTypeTitle4",
CouponIds = new List<int>()
},
new TopicMapTypeToListDto{
Clicks = 103,
Title = "testMapTypeTitle5",
},
}).ExecuteAffrows();
var dtomaplist2 = fsql.Select<TopicMapTypeToListDto>().ToList<TopicMapTypeToListDtoMap>();
var dtomaplist22 = fsql.Select<TopicMapTypeToListDto>().ToList<TopicMapTypeToListDtoMap2>();
var dtomaplist0 = fsql.Select<TopicMapTypeToListDto>().ToList();
var dtomaplist1 = fsql.Select<TopicMapTypeToListDto>().ToList(a => new TopicMapTypeToListDtoMap
{
CouponIds = a.CouponIds
});
int LocalConcurrentDictionaryIsTypeKey(Type dictType, int level = 1)
{
if (dictType.IsGenericType == false) return 0;
if (dictType.GetGenericTypeDefinition() != typeof(ConcurrentDictionary<,>)) return 0;
var typeargs = dictType.GetGenericArguments();
if (typeargs[0] == typeof(Type) || typeargs[0] == typeof(ColumnInfo) || typeargs[0] == typeof(TableInfo)) return level;
if (level > 2) return 0;
return LocalConcurrentDictionaryIsTypeKey(typeargs[1], level + 1);
}
var fds = typeof(FreeSql.Internal.Utils).GetFields(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public)
.Where(a => LocalConcurrentDictionaryIsTypeKey(a.FieldType) > 0).ToArray();
var ttypes1 = typeof(IFreeSql).Assembly.GetTypes().Select(a => new
{
Type = a,
ConcurrentDictionarys = a.GetFields(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public)
.Where(b => LocalConcurrentDictionaryIsTypeKey(b.FieldType) > 0).ToArray()
}).Where(a => a.ConcurrentDictionarys.Length > 0).ToArray();
var ttypes2 = typeof(IBaseRepository).Assembly.GetTypes().Select(a => new
{
Type = a,
ConcurrentDictionarys = a.GetFields(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public)
.Where(b => LocalConcurrentDictionaryIsTypeKey(b.FieldType) > 0).ToArray()
}).Where(a => a.ConcurrentDictionarys.Length > 0).ToArray();
#region pgsql poco
fsql.Aop.ParseExpression += (_, e) =>
{
if (e.Expression.IsParameter() == false) return;
//解析 POCO Jsonb a.Customer.Name
if (e.Expression is MemberExpression memExp)
{
var parentMemExps = new Stack<MemberExpression>();
parentMemExps.Push(memExp);
while (true)
{
switch (memExp.Expression.NodeType)
{
case ExpressionType.MemberAccess:
memExp = memExp.Expression as MemberExpression;
if (memExp == null) return;
parentMemExps.Push(memExp);
break;
case ExpressionType.Parameter:
var tb = fsql.CodeFirst.GetTableByEntity(memExp.Expression.Type);
if (tb == null) return;
if (tb.ColumnsByCs.TryGetValue(parentMemExps.Pop().Member.Name, out var trycol) == false) return;
if (new[] { typeof(JToken), typeof(JObject), typeof(JArray) }.Contains(trycol.Attribute.MapType.NullableTypeOrThis()) == false) return;
var tmpcol = tb.ColumnsByPosition.OrderBy(a => a.Attribute.Name.Length).First();
var result = e.FreeParse(Expression.MakeMemberAccess(memExp.Expression, tb.Properties[tmpcol.CsName]));
result = result.Replace(tmpcol.Attribute.Name, trycol.Attribute.Name);
while (parentMemExps.Any())
{
memExp = parentMemExps.Pop();
result = $"{result}->>'{memExp.Member.Name}'";
}
e.Result = result;
return;
}
}
}
};
//void RegisterPocoType(Type pocoType)
//{
// var methodJsonConvertDeserializeObject = typeof(JsonConvert).GetMethod("DeserializeObject", new[] { typeof(string), typeof(Type) });
// var methodJsonConvertSerializeObject = typeof(JsonConvert).GetMethod("SerializeObject", new[] { typeof(object), typeof(JsonSerializerSettings) });
// var jsonConvertSettings = JsonConvert.DefaultSettings?.Invoke() ?? new JsonSerializerSettings();
// FreeSql.Internal.Utils.dicExecuteArrayRowReadClassOrTuple[pocoType] = true;
// FreeSql.Internal.Utils.GetDataReaderValueBlockExpressionObjectToStringIfThenElse.Add((LabelTarget returnTarget, Expression valueExp, Expression elseExp, Type type) =>
// {
// return Expression.IfThenElse(
// Expression.TypeIs(valueExp, pocoType),
// Expression.Return(returnTarget, Expression.Call(methodJsonConvertSerializeObject, Expression.Convert(valueExp, typeof(object)), Expression.Constant(jsonConvertSettings)), typeof(object)),
// elseExp);
// });
// FreeSql.Internal.Utils.GetDataReaderValueBlockExpressionSwitchTypeFullName.Add((LabelTarget returnTarget, Expression valueExp, Type type) =>
// {
// if (type == pocoType) return Expression.Return(returnTarget, Expression.TypeAs(Expression.Call(methodJsonConvertDeserializeObject, Expression.Convert(valueExp, typeof(string)), Expression.Constant(type)), type));
// return null;
// });
//}
//var seid = fsql.Insert(new SomeEntity
//{
// Customer = JsonConvert.DeserializeObject<Customer>(@"{
// ""Age"": 25,
// ""Name"": ""Joe"",
// ""Orders"": [
// { ""OrderPrice"": 9, ""ShippingAddress"": ""Some address 1"" },
// { ""OrderPrice"": 23, ""ShippingAddress"": ""Some address 2"" }
// ]
//}")
//}).ExecuteIdentity();
//var selist = fsql.Select<SomeEntity>().ToList();
//var joes = fsql.Select<SomeEntity>()
// .Where(e => e.Customer.Name == "Joe")
// .ToSql();
#endregion
fsql.Aop.AuditValue += new EventHandler<FreeSql.Aop.AuditValueEventArgs>((_, e) =>
{
});
for (var a = 0; a < 10000; a++)
fsql.Select<User1>().First();
for (var a = 0; a < 1000; a++)
{
fsql.Transaction(() =>
{
var tran = fsql.Ado.TransactionCurrentThread;
tran.Rollback();
});
}
fsql.UseJsonMap();
var bid1 = 10;
var list1 = fsql.Select<A>()
.Where(a => a.BId == bid1);
var aid1 = 11;
var select2 = fsql.Select<B>();
(select2 as Select0Provider)._params = (list1 as Select0Provider)._params;
var list2 = select2
.Where(a => list1.ToList(B => B.BId).Contains(a.Id))
.Where(a => a.Id == aid1)
.ToSql();
//fsql.Aop.CommandBefore += (s, e) =>
//{
// e.States["xxx"] = 111;
//};
//fsql.Aop.CommandAfter += (s, e) =>
//{
// var xxx = e.States["xxx"];
//};
//fsql.Aop.TraceBefore += (s, e) =>
//{
// e.States["xxx"] = 222;
//};
//fsql.Aop.TraceAfter += (s, e) =>
//{
// var xxx = e.States["xxx"];
//};
//fsql.Aop.SyncStructureBefore += (s, e) =>
//{
// e.States["xxx"] = 333;
//};
//fsql.Aop.SyncStructureAfter += (s, e) =>
//{
// var xxx = e.States["xxx"];
//};
//fsql.Aop.CurdBefore += (s, e) =>
//{
// e.States["xxx"] = 444;
//};
//fsql.Aop.CurdAfter += (s, e) =>
//{
// var xxx = e.States["xxx"];
//};
fsql.Insert(new tttorder("xx1", 1, 10)).ExecuteAffrows();
fsql.Insert(new tttorder("xx2", 2, 20)).ExecuteAffrows();
var tttorders = fsql.Select<tttorder>().Limit(2).ToList();
var tsql1 = fsql.Select<Sys_reg_user>()
.Include(a => a.Owner)
.Where(a => a.UnionId == "xxx")
.ToSql();
var tsql2 = fsql.Select<Sys_owner>()
.Where(a => a.RegUser.UnionId == "xxx2")
.ToSql();
var names = (fsql.Select<object>() as Select0Provider)._commonUtils.SplitTableName("`Backups.ProductStockBak`");
var dbparams = fsql.Ado.GetDbParamtersByObject(new { id = 1, name = "xxx" });
var sql = fsql.CodeFirst.GetComparisonDDLStatements(typeof(EMSServerModel.Model.User), "testxsx001");
var test01 = EMSServerModel.Model.User.Select.IncludeMany(a => a.Roles).ToList();
var test02 = EMSServerModel.Model.UserRole.Select.ToList();
var test01tb = EMSServerModel.Model.User.Orm.CodeFirst.GetTableByEntity(typeof(EMSServerModel.Model.User));
var us = User1.Select.Limit(10).ToList();
new Products { title = "product-1" }.Save();
new Products { title = "product-2" }.Save();
new Products { title = "product-3" }.Save();
new Products { title = "product-4" }.Save();
new Products { title = "product-5" }.Save();
var wdy1 = JsonConvert.DeserializeObject<DynamicFilterInfo>(@"
{
""Logic"" : ""And"",
""Filters"" :
[
{
""Logic"" : ""Or"",
""Filters"" :
[
{
""Field"" : ""title"",
""Operator"" : ""contains"",
""Value"" : """",
},
{
""Field"" : ""title"",
""Operator"" : ""contains"",
""Value"" : ""product-2222"",
}
]
},
{
""Field"" : ""title"",
""Operator"" : ""eq"",
""Value"" : ""product-2""
},
{
""Field"" : ""title"",
""Operator"" : ""eq"",
""Value"" : ""product-3""
},
{
""Field"" : ""title"",
""Operator"" : ""eq"",
""Value"" : ""product-4""
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [100,200]
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [""101"",""202""]
},
{
""Field"" : ""testint"",
""Operator"" : ""contains"",
""Value"" : ""123""
},
]
}
");
var config = new JsonSerializerOptions()
{
PropertyNamingPolicy = null,
AllowTrailingCommas = true,
IgnoreNullValues = true,
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
Converters = { new JsonStringEnumConverter() }
};
var wdy2 = System.Text.Json.JsonSerializer.Deserialize<DynamicFilterInfo>(@"
{
""Logic"" : 1,
""Filters"" :
[
{
""Field"" : ""title"",
""Operator"" : 8,
""Value"" : ""product-1"",
""Filters"" :
[
{
""Field"" : ""title"",
""Operator"" : 0,
""Value"" : ""product-1111""
}
]
},
{
""Field"" : ""title"",
""Operator"" : 8,
""Value"" : ""product-2""
},
{
""Field"" : ""title"",
""Operator"" : 8,
""Value"" : ""product-3""
},
{
""Field"" : ""title"",
""Operator"" : 8,
""Value"" : ""product-4""
},
{
""Field"" : ""testint"",
""Operator"" : 8,
""Value"" : 11
},
{
""Field"" : ""testint"",
""Operator"" : 8,
""Value"" : ""12""
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [100,200]
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [""101"",""202""]
}
]
}
", config);
Products.Select.WhereDynamicFilter(wdy1).ToList();
Products.Select.WhereDynamicFilter(wdy2).ToList();
var items1 = Products.Select.Limit(10).OrderByDescending(a => a.CreateTime).ToList();
var items2 = fsql.Select<Products>().Limit(10).OrderByDescending(a => a.CreateTime).ToList();
BaseEntity.Orm.UseJsonMap();
BaseEntity.Orm.UseJsonMap();
BaseEntity.Orm.CodeFirst.ConfigEntity<S_SysConfig<TestConfig>>(a =>
{
a.Property(b => b.Config2).JsonMap();
});
new S_SysConfig<TestConfig> { Name = "testkey11", Config = new TestConfig { clicks = 11, title = "testtitle11" }, Config2 = new TestConfig { clicks = 11, title = "testtitle11" } }.Save();
new S_SysConfig<TestConfig> { Name = "testkey22", Config = new TestConfig { clicks = 22, title = "testtitle22" }, Config2 = new TestConfig { clicks = 11, title = "testtitle11" } }.Save();
new S_SysConfig<TestConfig> { Name = "testkey33", Config = new TestConfig { clicks = 33, title = "testtitle33" }, Config2 = new TestConfig { clicks = 11, title = "testtitle11" } }.Save();
var testconfigs11 = S_SysConfig<TestConfig>.Select.ToList();
var testconfigs11tb = S_SysConfig<TestConfig>.Select.ToDataTable();
var testconfigs111 = S_SysConfig<TestConfig>.Select.ToList(a => a.Name);
var testconfigs112 = S_SysConfig<TestConfig>.Select.ToList(a => a.Config);
var testconfigs1122 = S_SysConfig<TestConfig>.Select.ToList(a => new { a.Name, a.Config });
var testconfigs113 = S_SysConfig<TestConfig>.Select.ToList(a => a.Config2);
var testconfigs1133 = S_SysConfig<TestConfig>.Select.ToList(a => new { a.Name, a.Config2 });
var repo = BaseEntity.Orm.Select<TestConfig>().Limit(10).ToList();
//void ConfigEntityProperty(object sender, FreeSql.Aop.ConfigEntityPropertyEventArgs e)
//{
// if (e.Property.PropertyType == typeof(byte[]))
// {
// var orm = sender as IFreeSql;
// switch (orm.Ado.DataType)
// {
// case DataType.SqlServer:
// e.ModifyResult.DbType = "image";
// break;
// case DataType.MySql:
// e.ModifyResult.DbType = "longblob";
// break;
// }
// }
//}
//fsql.Aop.ConfigEntityProperty += ConfigEntityProperty;
Console.WriteLine("按任意键结束。。。");
Console.ReadKey();
}
static void InitData()
{
Task.Run(async () =>
{
using (var uow = BaseEntity.Orm.CreateUnitOfWork())
{
_asyncUow.Value = uow;
try
{
var id = (await new User1().SaveAsync()).Id;
}
finally
{
_asyncUow.Value = null;
}
uow.Commit();
}
var ug1 = new UserGroup();
ug1.GroupName = "分组一";
await ug1.InsertAsync();
var ug2 = new UserGroup();
ug2.GroupName = "分组二";
await ug2.InsertAsync();
var u1 = new User1();
u1.GroupId = ug1.Id;
await u1.SaveAsync();
await u1.DeleteAsync();
await u1.RestoreAsync();
u1.Nickname = "x1";
await u1.UpdateAsync();
var u11 = await User1.FindAsync(u1.Id);
u11.Description = "备注";
await u11.SaveAsync();
await u11.DeleteAsync();
var slslsl = Newtonsoft.Json.JsonConvert.SerializeObject(u1);
var u11null = User1.Find(u1.Id);
var u11s = User1.Where(a => a.Group.Id == ug1.Id).Limit(10).ToList();
var u11s2 = User1.Select.LeftJoin<UserGroup>((a, b) => a.GroupId == b.Id).Limit(10).ToList();
var ug1s = UserGroup.Select
.IncludeMany(a => a.User1s)
.Limit(10).ToList();
var ug1s2 = UserGroup.Select.Where(a => a.User1s.AsSelect().Any(b => b.Nickname == "x1")).Limit(10).ToList();
var r1 = new Role();
r1.Id = "管理员";
await r1.SaveAsync();
var r2 = new Role();
r2.Id = "超级会员";
await r2.SaveAsync();
var ru1 = new RoleUser1();
ru1.User1Id = u1.Id;
ru1.RoleId = r1.Id;
await ru1.SaveAsync();
ru1.RoleId = r2.Id;
await ru1.SaveAsync();
var u1roles = await User1.Select.IncludeMany(a => a.Roles).ToListAsync();
var u1roles2 = await User1.Select.Where(a => a.Roles.AsSelect().Any(b => b.Id == "xx")).ToListAsync();
}).Wait();
}
public static List<T1> ToListIgnore<T1>(this ISelect<T1> that, Expression<Func<T1, object>> selector)
{
if (selector == null) return that.ToList();
var s0p = that as Select0Provider;
var tb = s0p._tables[0];
var parmExp = tb.Parameter ?? Expression.Parameter(tb.Table.Type, tb.Alias);
var initExps = tb.Table.Columns.Values
.Where(a => a.Attribute.IsIgnore == false)
.Select(a => new
{
exp = Expression.Bind(tb.Table.Properties[a.CsName], Expression.MakeMemberAccess(parmExp, tb.Table.Properties[a.CsName])),
ignored = TestMemberExpressionVisitor.IsExists(selector, Expression.MakeMemberAccess(parmExp, tb.Table.Properties[a.CsName]))
})
.Where(a => a.ignored == false)
.Select(a => a.exp)
.ToArray();
var lambda = Expression.Lambda<Func<T1, T1>>(
Expression.MemberInit(
Expression.New(tb.Table.Type),
initExps
),
parmExp
);
return that.ToList(lambda);
}
class TestMemberExpressionVisitor : ExpressionVisitor
{
public string MemberExpString;
public bool Result { get; private set; }
public static bool IsExists(Expression selector, Expression memberExp)
{
var visitor = new TestMemberExpressionVisitor { MemberExpString = memberExp.ToString() };
visitor.Visit(selector);
return visitor.Result;
}
protected override Expression VisitMember(MemberExpression node)
{
if (!Result && node.ToString() == MemberExpString) Result = true;
return node;
}
}
}
public class
{
/// <summary>
/// ID
/// </summary>
[Column(Name = "ID", IsPrimary = true)]
public int ID { get; set; }
/// <summary>
/// 店铺名称
/// </summary>
[Column(Name = "店铺名称")]
public string { get; set; }
/// <summary>
/// 日期
/// </summary>
[Column(Name = "日期")]
public DateTime { get; set; }
/// <summary>
/// 品牌名称
/// </summary>
[Column(Name = "品牌名称")]
public string { get; set; }
/// <summary>
/// 成交金额
/// </summary>
[Column(Name = "成交金额")]
public decimal? { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(Name = "更新时间", CanInsert = false, CanUpdate = true, ServerTime = DateTimeKind.Local)]
public DateTime { get; set; }
}
abstract class BaseDataEntity
{
public Guid Id { get; set; }
public virtual int CategoryId { get; set; }
public virtual string Code { get; set; }
public virtual string Name { get; set; }
}
[Table(Name = "`bdd_1`")]
class GoodsData : BaseDataEntity
{
public override Int32 CategoryId { get; set; }
public override string Code { get; set; }
public override string Name { get; set; }
}
class GoodsDataDTO
{
public Guid Id { get; set; }
public int CategoryId { get; set; }
public string GoodsNo { get; set; }
public string GoodsName { get; set; }
}
[ExpressionCall]
public static class AchievementExpressionExtension
{
static ThreadLocal<ExpressionCallContext> context = new ThreadLocal<ExpressionCallContext>();
public static string Property(this Achievement achievement, string fieldName)
{
var ctx = context.Value;
var prefix = ctx.ParsedContent["achievement"];
prefix = prefix.Substring(0, prefix.IndexOf('.') + 1);
ctx.Result = prefix + $"`{fieldName}`";
return default;
}
}
[Table(DisableSyncStructure = true)]
public class Achievement
{
[Column(MapType = typeof(string))]
public Achievement Group { get; set; }
}
[Description("营销限制表")]
[Table(Name = "MarketingRestrictions")]
public class MarketingRestrictions
{
/// <summary>
/// 主键标识
/// </summary>
[Description("主键标识")]
[Column(DbType = "uniqueidentifier", IsPrimary = true)]
public Guid Id { get; set; }
/// <summary>
/// 商户应用Id
/// </summary>
[Description("商户应用Id")]
[Column(DbType = "varchar(32) not null")]
public string MchtAppId { get; set; }
/// <summary>
/// 描述
/// </summary>
[Description("描述")]
[Column(DbType = "nvarchar(500) not null")]
public string Describe { get; set; }
/// <summary>
/// 状态0、关闭 1、启用
/// </summary>
[Description("状态0、关闭 1、启用")]
[Column(DbType = "smallint")]
public sbyte Status { get; set; }
/// <summary>
/// 是否限制使用积分0、否 1、是
/// </summary>
[Description("是否限制使用积分0、否 1、是")]
[Column(DbType = "smallint")]
public sbyte IsLimitUsePoints { get; set; }
/// <summary>
/// 开始时间
/// </summary>
[Description("开始时间")]
[Column(DbType = "datetime")]
public DateTime StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
[Description("结束时间")]
[Column(DbType = "datetime")]
public DateTime EndTime { get; set; }
/// <summary>
/// 创建人Id
/// </summary>
[Description("创建人Id")]
[Column(DbType = "bigint")]
public long CreatedBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Description("创建时间")]
[Column(DbType = "datetime", ServerTime = DateTimeKind.Local, CanUpdate = false)]
public DateTime CreatedTime { get; set; }
/// <summary>
/// 最后编辑人Id
/// </summary>
[Description("最后编辑人Id")]
[Column(DbType = "bigint")]
public long? UpdatedBy { get; set; }
/// <summary>
/// 最后编辑时间
/// </summary>
[Description("最后编辑时间")]
[Column(DbType = "datetime")]
public DateTime? UpdatedTime { get; set; }
/// <summary>
/// 是否删除0、否 1、是
/// </summary>
[Description("是否删除0、否 1、是")]
[Column(DbType = "smallint")]
public sbyte Deleted { get; set; }
/// <summary>
/// 删除人Id
/// </summary>
[Description("删除人Id")]
[Column(DbType = "bigint")]
public long? DeletedBy { get; set; }
/// <summary>
/// 删除时间
/// </summary>
[Description("删除时间")]
[Column(DbType = "datetime")]
public DateTime? DeletedTime { get; set; }
}
class OracleLongRaw1
{
public Guid id { get; set; }
[Column(DbType = "long raw")]
public byte[] data { get; set; }
}
[Table(Name = "current_detail_{yyMM01}", AsTable = "recordDate=2022-12-01(1 month)", DisableSyncStructure = true)]
public class CurrentDetail
{
[Column(IsPrimary = true)]
public long Id { get; set; }
public DateTime CreateTime { get; set; } = DateTime.Now;
/// <summary>
/// 创建日期
/// </summary>
public DateTime RecordDate { get; set; }
/// <summary>
/// 创建小时
/// </summary>
public int RecordHour { get; set; }
/// <summary>
/// 根据当前分钟数规整到10分钟的倍数
/// 例如 21分=>20分
/// </summary>
public int RecordMinute { get; set; }
/// <summary>
/// 记录时间
/// </summary>
public DateTime RecordTime { get; set; }
/// <summary>
/// 设备Code
/// </summary>
public int DeviceCode { get; set; }
/// <summary>
/// 控制器序列号
/// </summary>
public string TerminalSequence { get; set; }
/// <summary>
/// 平均值
/// </summary>
public float AvgValue { get; set; }
/// <summary>
/// 路数
/// </summary>
public int RouteNum { get; set; }
/// <summary>
/// 相类型
/// </summary>
public int PhaseTypeId { get; set; }
public int StatuId { get; set; }
}
[Table(DisableSyncStructure = true)]
public abstract class BaseEntity22<TKey>
{
[Column(Position = 1, IsPrimary = true)]
public TKey Id { get; set; }
}
[Index("uk_name", "Name", true)]
public class MFUser : BaseEntity22<string>
{
public string Name { get; set; }
public string Pd { get; set; }
[Navigate(nameof(Id))]
public MFUserExt ExtInfo { get; set; }
}
[Index("uk_id", "MFUserId", true)]
public class MFUserExt
{
[Column(IsPrimary = true)]
public string MFUserId { get; set; }
[Navigate(nameof(MFUserId))]
public MFUser User { get; set; }
public string Phone { get; set; }
public string Addr { get; set; }
}
[Index("index_name", "MFUserId")]
[Index("index_token", "Token")]
public class MFToken : BaseEntity22<string>
{
public string MFUserId { get; set; }
public string Token { get; set; }
public string? Source { get; set; }
public DateTime EndTime { get; set; }
}
class pgjson_copy001
{
public Guid id { get; set; }
public JObject json { get; set; }
}
public class ProducerModel_Kafka
{
/// <summary>
/// 这个可以
/// </summary>
public IProducer<string, string> Sender { get; set; }
/// <summary>
/// ID
/// </summary>
public long ID { get; set; }
/// <summary>
/// IP
/// </summary>
public string IP { get; set; }
/// <summary>
/// 这个不行
/// </summary>
public ProducerConfig PConfig { get; set; }
}
class TestIdAndIdentity
{
[Column(IsPrimary = true)]
public int Id { get; set; }
[Column(IsIdentity = true)]
public int IdentityId { get; set; }
}
class TypeHandler01
{
public Guid id { get; set; }
[Column(MapType = typeof(string), StringLength = -1)]
public TestIdAndIdentity json { get; set; }
}
class String_TestIdAndIdentity : TypeHandler<TestIdAndIdentity>
{
public override object Serialize(TestIdAndIdentity value)
{
return JsonConvert.SerializeObject(value);
}
public override TestIdAndIdentity Deserialize(object value)
{
return JsonConvert.DeserializeObject<TestIdAndIdentity>((string)value);
}
}
}
public partial class OrderLine22x
{
public string Id { get; set; }
public string OrderId { get; set; }
public string ShopId { get; set; }
[JsonProperty, Column(Name = "Shop_Type")]
public int? ShopType { get; set; }
public string ProductId { get; set; }
public decimal Price { get; set; }
public decimal Amount { get; set; }
}
[JsonObject(MemberSerialization.OptIn), Table(Name = "T_Product22x", DisableSyncStructure = true)]
public partial class Product22x
{
public string ID { get; set; }
public string Name { get; set; }
public string Model { get; set; }
}
[Table]
class MiDevice
{
[Column] public string Id { get; set; }
[JsonMap, Column] public FormLocking FormLocking { get; set; }
}
class FormLocking
{
public string Value { get; set; }
public string Text { get; set; }
}
[JsonObject(MemberSerialization.OptIn), Table(Name = "RIS_WORKLIST")]
public class EBH_RisWorkList
{
[JsonProperty, Column(DbType = "varchar(64)", IsPrimary = true)]
public string RequisitionID { get; set; }
[JsonProperty, Column(Name = "accession_number", DbType = "varchar(32)")]
public string Accession_number { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string Address { get; set; }
[JsonProperty]
public int? AFCID { get; set; }
[JsonProperty, Column(IsIdentity = true)]
public int AutoIndex { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string Birthday { get; set; }
[JsonProperty, Column(DbType = "varchar(8)")]
public string BirthTime { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string CertificateID { get; set; }
[JsonProperty, Column(DbType = "varchar(512)")]
public string CheckSTDescribed { get; set; }
[JsonProperty, Column(DbType = "varchar(2048)")]
public string ClinicDiagnose { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ClinicID { get; set; }
[JsonProperty]
public int? Confidentiality { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string CustomCheckNumber { get; set; }
[JsonProperty]
public int DepartmentID { get; set; }
[JsonProperty]
public int EmergencyID { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string EndoscopyType { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string ExamBodyPart { get; set; }
[JsonProperty]
public int? ExamBodyPartNum { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ExamDate { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string ExamMethod { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ExamParameter { get; set; }
[JsonProperty, Column(Name = "exampath", DbType = "varchar(50)")]
public string Exampath { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ExamTime { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string FamilyTelephe { get; set; }
[JsonProperty, Column(DbType = "varchar(64)")]
public string FeeTypeName { get; set; }
[JsonProperty]
public int? FollowFlag { get; set; }
[JsonProperty]
public int? HaveImage { get; set; }
[JsonProperty]
public int? HaveRemark { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")]
public string HospitalAreaName { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string HospitalID { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ImageName { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string ImagePath { get; set; }
[JsonProperty, Column(Name = "imagequality", DbType = "varchar(32)")]
public string Imagequality { get; set; }
[JsonProperty]
public int? InAdvanceQueue { get; set; }
[JsonProperty]
public int? InDeedQueue { get; set; }
[JsonProperty, Column(Name = "isAddPatient", DbType = "varchar(2)")]
public string IsAddPatient { get; set; }
[JsonProperty, Column(Name = "isChangeDate", DbType = "varchar(2)")]
public string IsChangeDate { get; set; }
[JsonProperty, Column(Name = "isIBD", DbType = "varchar(2)")]
public string IsIBD { get; set; }
[JsonProperty]
public int? IsNotCallNumber { get; set; }
[JsonProperty]
public int? IsNotNOScreen { get; set; }
[JsonProperty, Column(Name = "isOverTime", DbType = "varchar(2)")]
public string IsOverTime { get; set; }
[JsonProperty]
public int? IsPaSSNumber { get; set; }
[JsonProperty, Column(Name = "isSEZCJ", DbType = "varchar(2)")]
public string IsSEZCJ { get; set; }
[JsonProperty]
public int IsSpePatientSign { get; set; }
[JsonProperty]
public int? IsTexu { get; set; }
[JsonProperty, Column(Name = "isZhiLiao", DbType = "varchar(2)")]
public string IsZhiLiao { get; set; }
[JsonProperty]
public DateTime? LastTryForImage { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string MedicalCardNumber { get; set; }
[JsonProperty, Column(DbType = "varchar(4096)")]
public string MedicalHistory { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string MIcardNumber { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ModalityAE { get; set; }
[JsonProperty]
public int? ModalityID { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ModalityName { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ModalityRemark { get; set; }
[JsonProperty]
public int? ModalityRoomID { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ModalityType { get; set; }
[JsonProperty]
public int? NurseStationFlag { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string PathologicID { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string PatientID { get; set; }
[JsonProperty]
public int PatientTypeID { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string PhysicalExamID { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string PhysicianRequirements { get; set; }
[JsonProperty]
public int PrintFlag { get; set; }
[JsonProperty]
public int? PrintNoticeFlag { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string PTN_NAME { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string PY { get; set; }
[JsonProperty]
public int QueueStateID { get; set; }
[JsonProperty, Column(DbType = "varchar(2048)")]
public string Remarks { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ReqDepartment { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ReqHospital { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string ReqPhysician { get; set; }
[JsonProperty]
public int? ResourceID { get; set; }
[JsonProperty]
public int? SendRepFlag { get; set; }
[JsonProperty, Column(Name = "SEX", DbType = "varchar(32)")]
public string Sex { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")]
public string SickbedID { get; set; }
[JsonProperty]
public int? StateID { get; set; }
[JsonProperty]
public int? StationID { get; set; }
[JsonProperty, Column(DbType = "varchar(32)")]
public string Telephone { get; set; }
[JsonProperty]
public double? Weight { get; set; }
[JsonProperty, Column(DbType = "varchar(128)")]
public string WorkStationAddress { get; set; }
}
public class A11
{
public int Id { get; set; }
public string Name { get; set; }
}
public class B11
{
public int Id { get; set; }
public string Name { get; set; }
public A11 a { get; set; }
}
public class Main1
{
public long Id { get; set; }
public long Test1Id { get; set; }
public long Test2Id { get; set; }
public long Test3Id { get; set; }
public virtual Test2 Test1 { get; set; }
public virtual Test2 Test2 { get; set; }
public virtual Test2 Test3 { get; set; }
}
public class Test2
{
public long Id { get; set; }
[Column(RereadSql = "IIF({IsEnabled} = 1, {0}, {0} + '-已停用')")]
public string ItemName { get; set; }
public bool IsEnabled { get; set; }
}
[JsonObject(MemberSerialization.OptIn), Table(Name = "T_OrderLine111222")]
public partial class OrderLine
{
public string Id { get; set; }
public string OrderId { get; set; }
public string ShopId { get; set; }
[JsonProperty, Column(Name = "Shop_Type")]
public int? ShopType { get; set; }
public string ProductId { get; set; }
public decimal Price { get; set; }
public decimal? Amount { get; set; }
}
[JsonObject(MemberSerialization.OptIn), Table(Name = "T_Product111222")]
public partial class Product
{
public string ID { get; set; }
public string Name { get; set; }
public string Model { get; set; }
}
[Table(Name = "D1_District")]
public class BaseDistrict
{
[Column(IsPrimary = true, StringLength = 6)]
public string Code { get; set; }
[Column(StringLength = 20, IsNullable = false)]
public string Name { get; set; }
[Column(StringLength = 6)]
public virtual string ParentCode { get; set; }
public int testint { get; set; }
}
[Table(Name = "D1_District")]
public class VM_District_Child : BaseDistrict
{
public override string ParentCode { get => base.ParentCode; set => base.ParentCode = value; }
[Navigate(nameof(ParentCode))]
public List<VM_District_Child> Childs { get; set; }
}
[Table(Name = "D1_District")]
public class VM_District_Parent : BaseDistrict
{
public override string ParentCode { get => base.ParentCode; set => base.ParentCode = value; }
[Navigate(nameof(ParentCode))]
public VM_District_Parent Parent { get; set; }
}
[JsonObject(MemberSerialization.OptIn), Table(DisableSyncStructure = true)]
public partial class ProjectItem
{
[JsonProperty, Column(DbType = "bigint", IsPrimary = true, IsIdentity = true)]
public long ID { get; set; }
/// <summary>
/// 编码
/// </summary>
[JsonProperty, Column(StringLength = 100, IsNullable = false)]
public string Code { get; set; }
/// <summary>
/// 实际最大用量
/// </summary>
[JsonProperty, Column(DbType = "decimal(14,4)")]
public decimal MaxQuantity { get; set; } = 0.0000M;
/// <summary>
/// 名称
/// </summary>
[JsonProperty, Column(StringLength = 50, IsNullable = false)]
public string Name { get; set; }
}
[Table(Name = "t_account")]
public class Account
{
[Column(Name = "FID", IsIdentity = true)]
public int ID { get; set; }
[Column(Name = "FName")]
public string Name { get; set; }
[JsonProperty, Column(Name = "join", DbType = "date", MapType = typeof(string))] // 数据库类型也可以是datetime
public DateTimeOffset Join { get; set; }
}
class DateTimeOffsetTypeHandler : TypeHandler<DateTimeOffset>
{
public override object Serialize(DateTimeOffset value)
{
return value.ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss");
}
public override DateTimeOffset Deserialize(object value)
{
return DateTimeOffset.TryParse((string)value, out var dts) ? dts : DateTimeOffset.MinValue;
}
}