在我的数据库中,我有三个模式:
根据对象的功能将对象分离到每个模式中,我认为这是一种很好的做事方式.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中的答案都是可以接受的.
笔记:
我只想检查几件事:
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 是否会提高性能?即已经在博客等上进行了性能测试(我在写帖子时想到了这一点,所以还没有看我自己)
在应用程序中,我们可以将报告输出为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自动化.
想法?
在我们的项目中,我们还有一个SQL项目,以便我们将所有内容保持在源代码管理下 我已经在项目中添加了两个sproc,现在我在tfs2010中收到了以下构建错误,但该项目在本地构建和部署良好.
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)
有任何想法吗?
我已经开始研究Reactive扩展,我想知道如何执行以下操作(生病并尝试保持简单):
有一个字符串列表(或任何其他类型)
将项目添加到所述列表时,请对其执行某些操作.
我有一个字符串列表
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有更好的方法吗?
好的,我正在为另一个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>?
以下代码:
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'
请问有人可以解释一下原因吗?