小编Stu*_*ler的帖子

找不到存储过程(使用模式)

在我的数据库中,我有三个模式:

  1. Schema1
  2. SCHEMA2
  3. Schema3

根据对象的功能将对象分离到每个模式中,我认为这是一种很好的做事方式.dbo除了model我没有修改的数据库中的默认对象之外,这反过来不会留下任何对象.

当我尝试从代码中引用存储过程时,在指定其存储过程时,我收到Stored Procedure Not Found错误.当我将CommandType背面更改为文本时,代码可以正常工作.

我没有代码,但它看起来像这样(写在我的头顶,所以不要指望它编译):

using(DbConnection conn as new DbConnection("Conn String")
{
     using(DbCommand cmd = conn.CreateCommand())
     {
         cmd.CommandText = "Schema1.usp_Category_MySproc @param1,@param2";
         cmd.CommandType = CommandType.StoredProcedure;
         conn.Open();
         DbDataReader rdr = cmd.ExecuteQuery();
         while(rdr.Read())
         {
              // DO STUFF
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

我还注意到参数必须按顺序传递,否则它们都被交换(因为我只能使用CommandType.Normal我没有用其他命令类型测试参数).我猜测参数传递的顺序无关紧要,只要传入每个参数?

有任何想法吗?

与往常一样,c#或vb中的答案都是可以接受的.

笔记:

  1. Windows 7企业版上的.Net 3.5
  2. 是的,我使用的是DbCommand而不是SqlCommand
  3. 针对Sql-Server 2005-> 2012

c# vb.net sql-server

4
推荐指数
1
解决办法
8113
查看次数

使用 SQL 排序规则影响性能

我只想检查几件事:

Q1)Latin1_General_CI_AS 不区分大小写,区分重音:即 SQL 会将以下内容视为相等 - “hello”和“HELLO”

使用 LINQ 我经常安静地做:

db.Where(v => v.Email == "some email".ToLower())
Run Code Online (Sandbox Code Playgroud)

Q2) 假设我对 Q1 的理解是正确的,我只是在浪费处理时间在查询中调用 ToLower() 吗?

Q3) 有没有人知道使用Latin1_General_bin 比Latin1_General_CI_AS 是否会提高性能?即已经在博客等上进行了性能测试(我在写帖子时想到了这一点,所以还没有看我自己)

sql linq sql-server performance collation

3
推荐指数
1
解决办法
6539
查看次数

使用Process.Start修复CA2122

在应用程序中,我们可以将报告输出为csv文件并加载它,类似于以下代码:

Process.Start("C:\MyReport.csv") ' Not real path 
Run Code Online (Sandbox Code Playgroud)

运行代码分析时,会产生以下错误:

CA2122不要将具有链接需求"Form.Function(Definition)"调用的方法间接暴露给具有LinkDemand的"Process.Start(String)".通过进行此调用,'Process.Start(String)'间接暴露给用户代码

我已经看到用某个地方来标记装配SecurityTransparentAttribute,这是否只是压制了消息?如果是这样,这不是我想要的.是否有另一种打开文件的方法可以绕过这个消息而不会抑制它?如果我现在不能在其他任何地方使用Excel,我最好还是避免使用Excel自动化.

想法?

c# vb.net security fxcop code-access-security

3
推荐指数
1
解决办法
4886
查看次数

使用TFS 2010构建Sql项目 - 错误MSB4023

在我们的项目中,我们还有一个SQL项目,以便我们将所有内容保持在源代码管理下 我已经在项目中添加了两个,现在我在收到了以下构建错误,但该项目在本地构建和部署良好.

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.Common.targets(92,18): 
error MSB4023: Cannot evaluate the item metadata "%(FullPath)". The item metadata "%(FullPath)" cannot be applied to the path "Schema Objects\Schemas\<Schema Name>\Programmability\Stored Procedures\<sprocName>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

sql msbuild tfs2010

3
推荐指数
1
解决办法
2889
查看次数

使用List <String>和Reactive扩展

我已经开始研究Reactive扩展,我想知道如何执行以下操作(生病并尝试保持简单):

  1. 有一个字符串列表(或任何其他类型)

  2. 将项目添加到所述列表时,请对其执行某些操作.

c# vb.net reactive-programming system.reactive

2
推荐指数
2
解决办法
1848
查看次数

使用Linq从平面列表创建嵌套列表

我有一个字符串列表

A01,B01 ,A02, B12, C15, A12,  ... 
Run Code Online (Sandbox Code Playgroud)

我想将列表放入列表列表或列表的列表中,以便
所有以相同字母开头的字符串组合在一起(使用linq)

A -> A01 , A02 , Al2
B -> B01 , B12
C -> C15
Run Code Online (Sandbox Code Playgroud)

要么

    A -> 01 , 02 , l2
    B -> 01 , 12
    C -> 15
Run Code Online (Sandbox Code Playgroud)

现在我只使用for循环迭代列表并将值添加到字典中的approp列表中.

(可能不对!)

   Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();

         foreach( string str in stringList)
         {
            string key = str.Substring(0,1);
            if (!dict.ContainsKey(key)){
                dict[key] = new List<string>();
            }

            dict[key].Add(str);
         }
Run Code Online (Sandbox Code Playgroud)

编辑:
哦对不起,我忘了添加这个,我有一个类别objs列表,这些是类别名称.
我需要检索类似的东西Dictionary<string, List<Category>>,我希望将它绑定到嵌套列表.(asp.net/ mvc)

使用Linq有更好的方法吗?

c# linq asp.net

2
推荐指数
1
解决办法
1840
查看次数

为什么此示例中var Int32不是List <Int32>

好的,我正在为另一个SO问题得到答案,我想出了以下函数来获得一个独特的int列表:

    static List<Int32> Example(params List<Int32> lsts)
    {
        List<Int32> result = new List<int>();

        foreach (var lst in lsts)
        {
            result = result.Concat(lst).ToList();
        }

        return result.Distinct().OrderBy(c => c).ToList();
    }
Run Code Online (Sandbox Code Playgroud)

当我var在VS2012中看到时,它说它的类型Int32不是List<Int32>.如图所示:

问题

不应该var类型List<Int32>

c# linq

2
推荐指数
2
解决办法
303
查看次数

通用方法编译时错误

以下代码:

    private IList<T> DoStuff<T>()
    {
        IList<T> res = new List<T>();
        for (int i = 0; i < 10; i++)
        {
            T item = DoOtherStuff<T>();
            res.Add(item);
        }
        return res;
    }

    private T DoOtherStuff<T>() where T : new()
    {
        return new T();
    }
Run Code Online (Sandbox Code Playgroud)

生成以下错误:

'T'必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法'DoOtherStuff()'中将其用作参数'T'

请问有人可以解释一下原因吗?

c# generics abstract-class

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