【070】EntityViewQuery用法
侧边栏壁纸
  • 累计撰写 71 篇文章
  • 累计收到 1 条评论

【070】EntityViewQuery用法

竹秋廿九
2026-03-26 / 0 评论 / 12 阅读 / 正在检测是否收录...

EntityViewQuery用法示例

反编译档案下发接口看到的一段集团使用EntityViewQuery的代码,让AI不改变逻辑优化了一下
而且还有in如何增加OqlParam参数
SysUtils在UFSoft.UBF.Sys.Database.dll

using System;
using System.Collections.Generic;
using System.Data;
using UFIDA.U9.CBO.SCM.Item;
using UFSoft.UBF.Business;
using UFSoft.UBF.PL;
using UFSoft.UBF.Sys.Database;
using UFSoft.UBF.View.Query;

namespace UFIDA.U9.ISV.ControlObjSendSV
{
    public class ControlObjSendSVImpementStrategy
    {
        public  override object Do()
        {
            // 前面一大串...
        
            string fullName = ItemMaster.EntityRes.BE_FullName; // bpObj.FullName
            string fromOrg = "10"; // bpObj.FromOrg
            List<string> ids = new List<string> { "2001070014901", "2001070014902" }; // bpObj.IDs
            List<long> RealInputIDS = new List<long>();
            string oql = $"select ID from {fullName.Replace(".", "::")} where Code in (@Codes) and Org.Code = @OrgCode";

            EntityViewQuery viewQuery = new EntityViewQuery();
            ObjectQuery q = viewQuery.CreateQuery(oql);
            OqlParam[] pars = {
                new OqlParam("Codes", SysUtils.ToXml(SysUtils.CreateIDTable(ids))),
                new OqlParam("OrgCode", fromOrg)
            };

            using (IDataReader dr = viewQuery.ExecuteReader(q, pars))
            {
                while (dr.Read())
                {
                    if (dr[0] is DBNull) throw new Exception("系统中找不到对应的料品ID");

                    RealInputIDS.Add(Convert.ToInt64(dr[0]));
                }
            }

            if (RealInputIDS.Count == 0) throw new Exception("未查询到匹配的数据");
            
            // 后面一大串...
        }
    }
}

SysUtils

using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace UFSoft.UBF.Sys.Database
{
    // Token: 0x0200000F RID: 15
    public class SysUtils
    {
        // Token: 0x060000A5 RID: 165 RVA: 0x00005A30 File Offset: 0x00003C30
        public static DataTable CreateIDTable()
        {
            return new DataTable("IDT")
            {
                Columns = 
                {
                    {
                        "ID",
                        typeof(string)
                    }
                }
            };
        }

        // Token: 0x060000A6 RID: 166 RVA: 0x00005A6C File Offset: 0x00003C6C
        public static DataTable CreateIDTable(List<long> idList)
        {
            DataTable idTable = SysUtils.CreateIDTable();
            foreach (long id in idList)
            {
                idTable.Rows.Add(new object[]
                {
                    id
                });
            }
            return idTable;
        }

        // Token: 0x060000A7 RID: 167 RVA: 0x00005AE0 File Offset: 0x00003CE0
        public static DataTable CreateIDTable(string ids)
        {
            DataTable idTable = SysUtils.CreateIDTable();
            bool flag = string.IsNullOrEmpty(ids);
            DataTable result;
            if (flag)
            {
                result = idTable;
            }
            else
            {
                string[] idList = ids.Split(new char[]
                {
                    ','
                });
                foreach (string id in idList)
                {
                    idTable.Rows.Add(new object[]
                    {
                        id
                    });
                }
                result = idTable;
            }
            return result;
        }

        // Token: 0x060000A8 RID: 168 RVA: 0x00005B50 File Offset: 0x00003D50
        public static DataTable CreateIDTable(List<string> idList)
        {
            DataTable idTable = SysUtils.CreateIDTable();
            foreach (string id in idList)
            {
                idTable.Rows.Add(new object[]
                {
                    id
                });
            }
            return idTable;
        }

        // Token: 0x060000A9 RID: 169 RVA: 0x00005BC0 File Offset: 0x00003DC0
        public static string ToXml(DataTable table)
        {
            foreach (object obj in table.Columns)
            {
                DataColumn col = (DataColumn)obj;
                col.ColumnMapping = MappingType.Attribute;
                bool flag = col.DataType.Equals(Type.GetType("System.DateTime"));
                if (flag)
                {
                    col.DateTimeMode = DataSetDateTime.Unspecified;
                }
            }
            StringBuilder sb = new StringBuilder(2048);
            StringWriter sw = new StringWriter(sb);
            table.WriteXml(sw, XmlWriteMode.WriteSchema);
            return sb.ToString();
        }

        // Token: 0x060000AA RID: 170 RVA: 0x00005C70 File Offset: 0x00003E70
        public static string ToXml(List<long> idList)
        {
            DataTable dt = SysUtils.CreateIDTable(idList);
            return SysUtils.ToXml(dt);
        }

        // Token: 0x060000AB RID: 171 RVA: 0x00005C90 File Offset: 0x00003E90
        public static string ToXml(List<string> idList)
        {
            DataTable dt = SysUtils.CreateIDTable(idList);
            return SysUtils.ToXml(dt);
        }

        // Token: 0x060000AC RID: 172 RVA: 0x00005CB0 File Offset: 0x00003EB0
        public static string ToXml(string ids)
        {
            DataTable dt = SysUtils.CreateIDTable(ids);
            return SysUtils.ToXml(dt);
        }

        // Token: 0x060000AD RID: 173 RVA: 0x00005CD0 File Offset: 0x00003ED0
        public static string GetMD5Key(string str)
        {
            bool flag = string.IsNullOrEmpty(str);
            string result;
            if (flag)
            {
                result = str;
            }
            else
            {
                using (MD5 i = new MD5CryptoServiceProvider())
                {
                    byte[] s = i.ComputeHash(Encoding.UTF8.GetBytes(str.ToUpper(CultureInfo.InvariantCulture)));
                    result = BitConverter.ToString(s).Replace("-", "");
                }
            }
            return result;
        }
    }
}
0

评论 (0)

取消