小编Mik*_*ike的帖子

如果XElement上不存在XAttribute默认值

如果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)

这会产生任何副作用,如大规模的负面速度影响吗?有没有更好的方法呢?

.net c# linq xelement xattribute

16
推荐指数
1
解决办法
7160
查看次数

具有EXECUTE AS OWNER的存储过程是从第三个模式表中选择的视图的有效替换吗?

数据库用户A应该只能访问特定数据.此数据当前由视图B.VIEW1提供,该视图从模式BC拥有的表中进行选择.

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.PROC1EXECUTE 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)

或者是否存在可能导致任何安全问题的负面副作用?

sql sql-server permissions stored-procedures ownership

6
推荐指数
1
解决办法
1万
查看次数