1、获取类里面的属性名称字符串
public string GetPropertyName(Expression<Func<Item, string>> expr)
{
var name = ((MemberExpression)expr.Body).Member.Name;
return name;
}
string name = GetPropertyName(o=>o.Name);
2、oracle常犯的错误
(1)当应用程序的路径里面带有'_下划线'、非法字符时,oracle始终连接不上。
(2)当有表被锁住时,在执行SQL语句时程序会莫名的没任何反应,断点也会在执行SQL语句的时候消失。
(3)当在SQL语句绑定变量的时候,如果字段绑定的是NVarChar的时候 ,有可能会导致上面的问题。
(4)在安装oracle客户端的时候一次我安装到指定的目录program file 就因为路径有个空格死活装不完全,千万注意路径不能有非法字符。
(5) COUNT(*),COUNT(col) 其中COUNT(*)会列出所有的行,COUNT(col)只会统计不为null的行。
3、oracle锁
1、IN EXCLUSIVE MODE NOWAIT 排它锁,如果表被锁住其它用户就只能查看。
如:session1 LOCK TABLE scp.BAS_TEST IN EXCLUSIVE MODE NOWAIT;
那么session2 再进行(insert/update/delete)将一直等待锁的释放 或者 如果想用同样的方式获取锁将报错:资源已经被独占。
2、IN SHARE MODE NOWAIT 共享锁,如果获取此锁其它用户也只能查看。但其它用户也可以获取共享锁,但是双方都不能操作。
如:session1 LOCK TABLE scp.BAS_TEST IN SHARE MODE NOWAIT;
那么 session2 可以通过同样的方式获取共享锁,但是都不能操作,如果一方操作(insert/update/delete),则会等待其它释放共享锁。
注意:如果表被session1锁住了,这个时候session2用for update 去更新表是会一直等待session1释放锁的,如果用 for update nowait 则不会等待直接报错。
浙公网安备 33010602011771号