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)