Coder Social home page Coder Social logo

cyq1162 / cyqdata Goto Github PK

View Code? Open in Web Editor NEW
683.0 683.0 339.0 19.58 MB

cyq.data is a high-performance and the most powerful orm.(.NET 最好用的ORM数据层框架,木有之一!支持.NET所有版本、支持.NET Core所有版本)Support:Mssql、Mysql、Oracle、Sybase、Postgres、DB2、FireBird、Sqlite、DaMeng(达梦)、KingBaseES(人大金仓)、Txt、Xml、Access、Excel、FoxPro、Redis、MemCache。

License: GNU Lesser General Public License v3.0

C# 100.00%

cyqdata's People

Contributors

cyq1162 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cyqdata's Issues

Thanks

Thanks a lot

I would like to learn the knowledge of God

连接mysql无法读取表中列名

项目中连接本地mysql读取表名没有问题,但是连接 linux服务器的mysql读取表名失败,我是mysql哪个地方的设置不对吗,这个方法GetColumns(表名,数据库连接)

使用Redis自动缓存,更新表数据移除缓存时报错

AutoCache.RemoveCache(string baseKey):

if (_MemCache.CacheType == CacheType.LocalCache)
{
if (cacheKeys.ContainsKey(baseKey))
{
keys = cacheKeys[baseKey].ToString();
cacheKeys.Remove(baseKey);
}
}
else
{
keys = _MemCache.Get(baseKey);
}
if (!string.IsNullOrEmpty(keys))
{
foreach (string item in keys.Split(','))
{
_MemCache.Remove(item);
}
}
在此代码段中,keys获取出来的数据为:,K32820628561
keys值Split之后,第一个索引值为空,_MemCache.Remove时会报错。
异常信息:
Value cannot be null.
Parameter name: Key may not be empty.
at CYQ.Data.Cache.ClientBase.checkKey(String key)
at CYQ.Data.Cache.ClientBase.hash(String key)
at CYQ.Data.Cache.RedisClient.Delete(String key)
at CYQ.Data.Cache.RedisCache.Remove(String key)
at CYQ.Data.Cache.AutoCache.RemoveCache(String baseKey)

MProc执行没有values的Insert语句异常

sql:
INSERT INTO TABLE_NAME1 (ID,RQ,FK_ID) SELECT RAWTOHEX(SYS_GUID()),TO_CHAR(SYSDATE,'yyyy-MM-dd'),TABLE_NAME2.ID FROM TABLE_NAME2

以上语句会导致SqlSyntax.cs第161行计算出一个-1,然后第162就崩溃了

MAction 下 Update 方法出现疑似 bug

Update 方法中,当 autoSetValue is true and 前台没有传入有效值时会使生成的 sql (line689)存在语法错误。

重现方式:用户列表行编辑模式只修改主表 Sys_User 中的数据不修改 Sys_UserInfo 中的数据。

出错 sql 示例:Update [Sys_UserInfo] set where [UserInfoID]='534a5974-5b5d-492d-8969-25dbe58e757d'

Refactor

May be can refactor this code to make it more beautiful.

MDataTable.AcceptChaged方法批量插入,mySQL语句有问题

mysql库,\SQL\SqlCreate.cs中
internal static string MySqlBulkCopySql = "LOAD DATA LOCAL INFILE '{0}' INTO TABLE {1} CHARACTER SET utf8 FIELDS TERMINATED BY '{2}' LINES TERMINATED BY '|\r\n|' {3}";
语句执行报错,删除 CHARACTER SET utf8就好了

MProc 有没有分页功能?

我们有些语句在使用with table 方式(比如递查询),数据比较大的时候,目前的MProc没有分页功能
而MAction有分页功能,但是不能直接传入纯sql语句 自动产生的语句,总会自动给我加上select 和 where

使用MAction里面的select方法,因SQL语法错,无法知道错误!

使用MAction里面的select方法,因SQL语法错或者使用一些引起CYQ防注入的关键字时,无法知道错误!而且当查询的时候,如果打开了事务后,CYQ会因为刚才这些语法错的问题,内部释放事务,回滚,但程序继续走下去,变成SELECT方法之前的回滚,下面的继续执行,造成数据不一致的问题

isjson 识别有bug

{"ApiType":"InspectsController","Parameters":[{"Value":"2730003497"},{"Value":"CS-01"},{"Value":"2022080405528"},{"Value":"00049634"},{"Value":"321"},{"Value":"OK"},{"Value":"1"},{"Value":"0"},{"Value":[]}],"Method":"InspectsAndBathCheck","Context":{"InvOrgId":321}}
这个是对的格式,识别结果是 Tue
{"ApiType":"InspectsController","Parameters":[{"Value":"2730003497"},{"Value":"CS-01"},{"Value":"2022080405528"},{"Value":"00049634"},{"Value":"321"},{"Value":"OK"},{"Value":"1"},{"Value":"0"},{"Value":[]}}}],"Method":"InspectsAndBathCheck","Context":{"InvOrgId":321}}
而在Method 前面加几个} ,用isjson 识别还是True

Redis自动缓存,获取StringBuilder值失败

AutoCache.SetBaseKey(string baseKey, string key):
StringBuilder sb = _MemCache.Get(baseKey);
此行代码获取出来的值为空,其实redis里面有值。
image
如果不能获取到之前的的key,那么在更新表数据时会导致部分缓存未清除,再次select时会读取缓存数据,而不是更新之后的数据。

关于netcore appsettings.json 读不到conn的反馈

我在实际了开发中也遇到了 appsettings.json 里读不到conn配置问题

然后我发现是因为appsettings.json的字符集问题,如果是utf-8 就没有问题
如果是gb2312 就不行(系统会提示无法识别gb2312字符集提示)

我估计那些遇到读不到配置文件的人,可能用了windows记本事去编辑了他,导致这个故障的产生

希望做个容错处理! 或是对字符集的判断

nuget中最新版V5.8.3.0有bug

MDataTable批量操作有bug,如下操作m_dt.TableName = "MachineData"; m_dt.Conn = m_sqlCon; m_dt.AcceptChanges(AcceptOp.Insert);
会报错误:MsSql Call Function::ExeNonQuery():数据库中已存在名为 'MachineData' 的对象

生成文本数据库问题

创建文本数据库如下
class Configs: CYQ.Data.Orm.OrmBase
{
public Configs()
{
this.SetInit(this, "Configs", "Xml Path={0}");
}
public int _Id { get; set; }
public string _Name { get; set; }
public string _Ip { get; set; }
}
插入数据:
using (Configs config = new Configs())
{
//config._Name = “aa”;
config._Ip = "bb";
config.Insert();
}
若不注释“config._Name = “aa”; ”则能正常生成xml文件,若注释“config._Name =“aa”;”就不会生成xml文件,而且版本V5.7.7是没有问题的,之后的版本都会有这个问题,插入的一条数据记录如果没有给每个字段都赋值,就无法生成文本数据库文件

MAction自定义sql bug

使用如下sql初始化MAction,
情况一:"(SELECT * FROM (SELECT * FROM tableName)a)v"、
情况二:关键字from与表名之间使用tab键代替空格。
则SQL/Schema/CrossDB.cs,GetFirstTableNameFromSql(string sql)无法返回正确的表名。
情况一返回表名为"tableName)a",
情况二直接无法获取表名。

MProc执行存储过程

qq 20180814171230
这边 object outPutValue = mc.OutPutValue;是有2条数据的。
转换成Dictionary dic 直接为空。。

SQLite 数据库 OrmBase ToList “<ID>k__BackingField”

远程处理无法在类型“GSCSClient.TransportStatus”上找到字段“k__BackingField”。
CYQ.Data.AppConfig.SetConn("Conn", @"Data Source=gscs.db;failifmissing=false;");

using System;
using CYQ.Data.Orm;
namespace GSCSClient
{
public class TransportStatus : OrmBase
{
public TransportStatus()
{
base.SetInit(this, "transport_status", "Conn");
}
public int ID { get; set; }
public int Type { get; set; }
public string Date { get; set; }
public string Username { get; set; }
public string GID { get; set; }
public string Hash { get; set; }
public string Hashfile { get; set; }
public string Status { get; set; }
public string Name { get; set; }
public string Progress { get; set; }
public string Upfiles { get; set; }
public string Downloadspeed { get; set; }
public string Uploadspeed { get; set; }
public string Size { get; set; }
public string Upsize { get; set; }
public string Show { get; set; }
}
}
using (MAction action = new MAction("transport_status"))

        {
            //查询数据格式

            

            action.Select().ToList< TransportStatus >();//直接查询 泛型实体


        }

       
        TransportStatus taskInfo = new TransportStatus();
        MDataTable md = taskInfo.Select("username ='" + AppContext.User + "'");
        List< TransportStatus> transportsList =md.ToList<TransportStatus>();

只要ToList 都会报错,可以插入数据

DBFast增加Delete可删除对象参数

        using (MAction action = GetMAction<T>())
        {
            if (!typeof(T).IsAssignableFrom(where.GetType()))
                return action.Delete(where);
            else
            {
                action.Data.LoadFrom(where);
                return action.Delete();
            }
        }

能否考虑在MAction类增加IsIgnoreDeleteField属性

能否考虑在MAction类增加IsIgnoreDeleteField属性,默认为false;
目的:
1.调整框架的select方法,自动忽略掉表中IsDeleted为true的记录,符合正常的业务需求;当IsIgnoreDeleteField属性为true时,才返回所有记录。
2.调整框架delete方法,当IsIgnoreDeleteField属性为true时,带IsDeleted的表也执行物理删除。

反馈三个BUG,确定了是BUG

1 .net core环境读不到这个数据库连接字符串,读出来总是为null



2 MDataTable赋值给dataGridView后,点击列标题,排序失效。用原生的DataTable则无此问题。
3 假设我数据有两张表,aa_b和 aab,程序就会报错。
错误代码是这行:return Math.Abs(name.Replace("-", "").Replace("_", "").Replace(" ", "").ToLower().GetHashCode());

避坑,MySql.Data v8.0.16执行dt.AcceptChanges(AcceptOp.InsertWithID)有错

我真的快郁闷的到不行了,看到NuGet提醒MySql有更新,MySql.Data v6.9.12升级到MySql.Data v8.0.16,后来忘记这事了。
之后dt.AcceptChanges(AcceptOp.InsertWithID)总是提示失败:
V5.7.9.7 Error : MySql Call Function::ExeNonQuery():The used command is not allowed with this MySQL version
MySql.xxx_bak.SQL:
LOAD DATA LOCAL INFILE 'C:\xxx.csv' INTO TABLE tb_order CHARACTER SET utf8 FIELDS TERMINATED BY '$,$' LINES TERMINATED BY '|
|' (……)
ExeNonQuery():The used command is not allowed with this MySQL version

mysql版本是v5.7.20,而且global local_infile已设置ON
降级就OK了MySql.Data v6.9.12

其实识别一个Json是否为合法的很简单的。

其实识别一个Json是否为合法的很简单的,利用栈的**就可以了,例如:{“temp”:["id":“012”,“value”:"123"]}这个Json首先将第一个{入栈,然后判断下一个字符和栈顶是否相等,如果不相等且是[、]、{、}、这类符号,那么久继续入栈,然后接着判断是否和栈顶相等,如果相等,且是前面说的那些字符,就进行出栈操作,最后字符串判断完,就检查栈是否为空,如果不为空则Json字符串不合法

MAction用SetSelectColumns()方法指定查询了查询的列后绑定datagridview 用户修改字段数据后如果数据为空批量更新将无法更新为空的数据。

` public partial class Form1 : Form
{
MDataTable md = null;
public Form1()
{
InitializeComponent();
}

    private void Form1_Load(object sender, EventArgs e)
    {
        string[] cName;

        cName = new string[] { "Show", "ID", "ChannelName","CustomName", "YAxisName", "Format", "Unit", "Color", "AlarmEnable" };

        using (MAction action = new MAction("ChannelTable"))
        {
            action.SetSelectColumns(cName);
            md = action.Select();
            md.Bind(dgv_ChannelEditor);
        }
    }

    private void tsb_Save_Click(object sender, EventArgs e)
    {
       
        if (md.AcceptChanges(AcceptOp.Update))
        {
            MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        else
        {
            MessageBox.Show("保存失败!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
       
    }
}`

MAction用SetSelectColumns()方法指定查询了要查询的列后绑定datagridview 用户修改字段数据后如果数据为空批量更新将无法更新为空的数据。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.