DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.24k stars 1.33k forks source link

无实体分表插入失败 #1149

Closed alinayaa closed 1 year ago

alinayaa commented 1 year ago

按照 #1146 建表成功,但是写入失败,请指导

static void Main(string[] args)
        {
            var db = new SqlSugarScope(new ConnectionConfig()
                {
                    ConnectionString =
                        "server=127.0.0.1;database=sugar;user=root;CharSet=utf8mb4;password=123456;port=3306;Allow User Variables=True;",
                    DbType = DbType.MySql,
                    IsAutoCloseConnection = true
                },
                db =>
                {
                    //db.Aop.OnLogExecuting = (sql, pars) =>
                    //{
                    //};
                }
            );
            db.Ado.CommandTimeOut = 10;

            var builder = db.DynamicBuilder().CreateClass("axx",
                new SugarTable()
                {
                    TableName = "azaDy_{year}{month}{day}",
                    TableDescription = "axx"
                }, null, null, new SplitTableAttribute(SplitType.Month)
            );
            builder.CreateProperty("time", typeof(DateTime),
                new SugarColumn() { ColumnDescription = "时间", IsNullable = false, IsPrimaryKey = true }, isSplitField: true);

            builder.WithCache();

            var tableType = builder.BuilderType();
            db.CodeFirst.SplitTables().InitTables(tableType);

            Dictionary<string, object> data = new()
            {
                { "time", DateTime.Now }
            };
            var value = db.DynamicBuilder().CreateObjectByType(tableType, data);

            var r = db.InsertableByObject(value).ExecuteCommand();
            Console.WriteLine(r);

        }
DotNetNext commented 1 year ago

这个我支持一下,目前这种是不能实现分表插入的

alinayaa commented 1 year ago

感谢,因为无实体建表和无实体插入是配套使用的,我希望通过一个字典搞定。

DotNetNext commented 1 year ago

SqlSugarCore 5.1.4.68-preview01 升级到最新的预览版本已支持

            var x31 = db.DeleteableByObject(o).SplitTable().ExecuteCommand();
            var x33 = db.UpdateableByObject(o).SplitTable().ExecuteCommand();
            var x35 = db.InsertableByObject(o) .SplitTable().ExecuteCommand();
DotNetNext commented 1 year ago

.SplitTable() 不要漏了

DotNetNext commented 1 year ago

还有疑问发布新的Issues

alinayaa commented 1 year ago

测试通过,验证中 感谢