我想使用表达式树动态生成以下select语句:
var v = from c in Countries
where c.City == "London"
select new {c.Name, c.Population};
Run Code Online (Sandbox Code Playgroud)
我已经研究出如何生成
var v = from c in Countries
where c.City == "London"
select new {c.Name};
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到一个构造函数/重载,让我在select lambda中指定多个属性.
我有一个带有2个SQL项目DB1,DB2的Visual Studio 2013解决方案.
DB1有一个引用DB2的存储过程.
如果我在程序中使用.dacpac和同义词
SELECT * FROM [$(DB2)].[dbo].[Table1]
Run Code Online (Sandbox Code Playgroud)
然后将数据库中的Schema与SQL Project进行比较错误地将上述内容检测为更改,因为它不处理变量/同义词.
相反,我使用
SELECT * FROM DB2.[dbo].[Table1]
Run Code Online (Sandbox Code Playgroud)
并将存储过程构建类型更改为无(以便项目构建)然后从数据库到Proejct 进行架构比较**将"看不到"我的项目中的存储过程并在每个SQL数据库项目中添加新的过程相比
在模式比较后,我现在将看到
其中n =架构比较#!
如果有一种方法可以忽略构建错误SQL7501,那么它应该使用第二个选项,但它似乎不能被忽略.
另一种解决方案是保存模式比较并手动选择跳过所有引用DB2的过程但是我想检测这些过程中的更改.
这似乎是一个简单而常见的用例.有人为这个设计缺陷提出了解决方法吗?
在测试了凯文的答案之后,我已经确定了为什么我的一些观点没有正确处理SC.他的答案在技术上是正确的:
如果你在DB1中有一个视图:
SELECT * FROM DB1.dbo.Table1 T1
INNER JOIN DB2.dbo.Table2 T2
ON T2.Field1 = T1.Field1
Run Code Online (Sandbox Code Playgroud)
并在您的DB1 SQL Project中原始(没有自引用DB1)
SELECT * FROM dbo.Table1 T1
INNER JOIN [$(DB2)].dbo.Table2 T2
ON T2.Field1 = T1.Field1
Run Code Online (Sandbox Code Playgroud)
模式比较将无法正确替换变量并识别更改:[$(DB2)] - > $(DB2)
问题是自引用DB1.dbo.Table,在我的情况下,已插入大量连接的一半,其中许多是DB2引用.
这会导致SC错误地将所有[$(DB2)]标记为更改.可能是因为数据库sql没有在VS中"构建"并恢复到文本比较.
所以这不是一个真正的错误,但对于没有手动比较SQL的每一行的开发人员而言,这是一个令人困惑的结果.
我认为这个问题可以扩展到以下几点: …
sql schema database-project schema-compare visual-studio-2013
我有以下结构
public class MyClass : MyBaseClass<System.Int32>
{
}
Run Code Online (Sandbox Code Playgroud)
在静态方法中,如果没有实例化新的MyClass实例,我如何获得用于构建具体基类的泛型参数的类型?例如,在上面的示例System.Int32中