如果XElement上的XAttribute不存在,是否有更简单/更好的方法来返回默认值?:
我试图以更短的方式写这个(因为它是一个双线):
var a = root.Attribute("testAttribute");
var v = (a == null ? "" : a.Value);
Run Code Online (Sandbox Code Playgroud)
我的方法:通过扩展方法:
public static XAttribute Attribute(this XElement obj, string name, string defaultValue)
{
if (obj.Attribute(name) == null)
return new XAttribute(name, defaultValue);
return obj.Attribute(name);
}
var v = root.Attribute("testAttribute", "").Value;
Run Code Online (Sandbox Code Playgroud)
这会产生任何副作用,如大规模的负面速度影响吗?有没有更好的方法呢?
数据库用户A应该只能访问特定数据.此数据当前由视图B.VIEW1提供,该视图从模式B和C拥有的表中进行选择.
CREATE VIEW [B].[VIEW1] AS SELECT * FROM [B].[VIEW2], [C].[VIEW1]
Run Code Online (Sandbox Code Playgroud)
由于C.VIEW1不归B所有,因此所有权链适用.
这意味着虽然A被授予对B.VIEW1的SELECT权限,但它无法从中进行选择.
SELECT permission denied on object 'C.VIEW1', database '...', schema '...'.
Run Code Online (Sandbox Code Playgroud)
存储过程B.PROC1与EXECUTE AS OWNER条款在安全性方面是B.VIEW1的有效替代吗?
CREATE PROC [B.PROC1] WITH EXECUTE AS OWNER AS BEGIN SELECT * FROM [B.VIEW2], [C].[VIEW1] END
Run Code Online (Sandbox Code Playgroud)
或者是否存在可能导致任何安全问题的负面副作用?
.net ×1
c# ×1
linq ×1
ownership ×1
permissions ×1
sql ×1
sql-server ×1
xattribute ×1
xelement ×1