1.ORACLE 索引及性能相关系统视图使用2.ORACLE闪回功能基本用法3.【检查ORACLE阻塞】如果阻塞超过N秒则发短信报警并KILL进程4.如何批量脚本停用(启用)SQL Server 和 ORACLE 数据库用户作业5.ORACLE隔离级别与脏读/不可重复读/幻读的关系以及SELECT FOR UPDATE用法6.ORACLE 中 START WITH CONNECT BY PRIOR 用法(用于父子关系的数据表查询)7.ORACLE / SQL Server-查询最终阻塞者进程脚本8.关于Oracle客户端运行SQLPlus.exe9.SQL SERVER / ORACLE 拼接多行记录字段为一个字符串的方法10.ORACLE自定义函数返回记录集(表类型)的写法11.【转】Oracle 建立索引及SQL优化12.【ORACLE】调整序列的当前种子值13.ORACLE 检索某列包含特定字符串的数据表工具存储过程14.ORACLE常用修改字段脚本15.在oracle中怎么通过字段名查询其所在的表16.ORACLE 查询所有用户调度作业17.【ORACLE】查看死锁进程并结束死锁的脚本18.Oracle获取最近执行的SQL语句19.Oracle的函数返回表类型(转)20.ORACLE变量定义及使用(另,T-SQL EXISTS的PLSQL替代写法)21.ORACLE常用脚本示例22.使用 PL/SQL Developer Version 14 调试 Oracle 存储过程23.Oracle前端工具(PL/SQL Developer)—在不安装Oracle客户端的情况下使用24.SQL SERVER/ORACLE 将ID串列转换为多行的写法25.ORACLE 游标和NULLIF函数在触发器中的使用
26.关于“LINQ to Entities does not recognize the Method '...' ”问题原因浅析
27.Oracle作业执行与SQL Develop运行语句(脚本)的区别28.ORACLE 创建表前判断是否已存在29.ORACLE 返回类型为SYS_REFCURSOR的存储过程用法30.ORACLE杂文之自定义函数与随机函数LINQ to Entities 中,有些断言能对内存实体使用,但是发到数据库端可能因无法解析而抛出异常,需要特别注意。示例如下:
s.IsNullOrWhiteSpace(), s.IsNullOrEmpty, s.IsEmpty()(这些方法都属于自定义的扩展方法,无法被EF直接解析为SQL语句)
如 a => a.FullName.IsNullOrWhiteSpace() 可以改写为: a => a.FullName != null && a.FullName.Length > 0
[TestMethod]
public void DataSourceGetOneTest()
{
string host = "localHost";
IList<string> IpAddress = EnvironmentEx.GetIpAddress();
ServerContext sc = this.CreateServerContext();
using (EdmWcfService edm = sc.CreateEdm<EdmWcfService>(Dbs.His))
{
// a => string.Equals(a.Name, host, StringComparison.CurrentCultureIgnoreCase不能用于数据库端,否则报下面错误:
// System.ArgumentException:“为方法“Boolean Equals(System.String, System.String, System.StringComparison)”的调用提供的参数的数量不正确”
// var dto = edm.WcfServers.FirstOrDefault(a => string.Equals(a.Name, host, StringComparison.CurrentCultureIgnoreCase));
// 如下用法是正确的:
var dto = edm.WcfServers.FirstOrDefault(a => (a.Name != null && a.Name.Equals(host, StringComparison.CurrentCultureIgnoreCase))
|| (a.Name != null && a.FullName.Equals(host, StringComparison.CurrentCultureIgnoreCase)));
// 下面写法也会报错如下:
// LINQ to Entities does not recognize the method 'Boolean StartsWith(System.String, System.StringComparison)' method, and this method cannot be translated into a store expression.
//dto = edm.WcfServers.FirstOrDefault(a => (a.Name != null && a.Name.StartsWith(host, StringComparison.CurrentCultureIgnoreCase))
// || (a.Name != null && a.FullName.StartsWith(host, StringComparison.CurrentCultureIgnoreCase)));
// 如下用法是正确的:
dto = edm.WcfServers.FirstOrDefault(a => (a.Name != null && a.Name.ToUpper().StartsWith(host.ToUpper()))
|| (a.Name != null && a.FullName.ToUpper().StartsWith(host.ToUpper())));
int serverId = (dto != null) ? dto.ServerId : -1;
Assert.IsTrue(serverId > 0);
}
}
其次,ORACLE数据库中空字符串被视为NULL处理,因此数据库SQL函数中字段值为' '(空格)的被 RTRIM(LRTRIM(a.Name)) 调用后结果并非空字符串,而是NULL。所以需要注意:
[TestMethod()]
public void TestEdmQuery()
{
using (ServerContext sc = WcfServiceHelper.CreateServerContext(ClientContext.Instance))
{
using (EdmConfig edm = sc.CreateEdm<EdmConfig>(Dbs.His))
{
var query = edm.EntityPickers.Where(a => a.UseCaseKey != null && a.UseCaseKey.Trim() == null);
string tracestring = query.ToTraceString();
Debug.Print(tracestring);
IList<DtoEntityPicker> ret = query.ToList();
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2010-04-03 LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4) ?