是否反映在C#报价的方式来确定是否给予一些System.Type款型的一些接口?
public interface IMyInterface {}
public class MyType : IMyInterface {}
// should yield 'true'
typeof(MyType)./* ????? */MODELS_INTERFACE(IMyInterface);
Run Code Online (Sandbox Code Playgroud) 显然从Visual Studio 2012中删除了宏.
是否有插件/扩展/工具可以让我录制和播放键盘宏(很像Visual Studio 2010中的录制/播放临时宏)?
例如,我通常会在将代码从一种语言转换为另一种语言时使用宏,或者从文本列表中快速生成属性等.
macros visual-studio-2013 visual-studio-2015 visual-studio-2017 visual-studio-2019
我知道我可以设置Visual Studio来通过.NET框架源代码进行调试.
但有没有一种方法可以在不调试时浏览代码 - 即能够按F12或"转到定义"?
我认为如果Visual Studio中没有内置该功能,那么可能会有一个插件可能会添加它?
我试图在我的Entity Framework模型中导入SQL Server的CONTAINS()函数,以便我可以在我的LINQ查询中使用它.
我已将此添加到我的EDM中:
<Function Name="FullTextSearch" ReturnType="Edm.Boolean">
<Parameter Name="Filter" Type="Edm.String" />
<DefiningExpression>
CONTAINS(*, Filter)
</DefiningExpression>
</Function>
Run Code Online (Sandbox Code Playgroud)
添加创建我的方法存根:
[EdmFunction("MyModelNamespace", "FullTextSearch")]
public static bool FullTextSearch(string filter)
{
throw new NotSupportedException("This function is only for L2E query.");
}
Run Code Online (Sandbox Code Playgroud)
我试着像这样调用函数:
from product in Products
where MyModel.FullTextSearch("FORMSOF(INFLECTIONAL, robe)")
select product
Run Code Online (Sandbox Code Playgroud)
引发以下异常:
The query syntax is not valid. Near term '*'
Run Code Online (Sandbox Code Playgroud)
我意识到我定义的函数没有直接链接到被查询的实体集,所以这也可能是一个问题.
有什么办法可以解决这个问题吗?
sql-server full-text-search entity-framework entity-framework-4.1
我正在使用Powershell编写构建脚本.这些脚本执行各种操作,例如从SVN获取最新的源代码,备份等,并使用MSBuild构建解决方案:
cmd /c C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe "C:\Dev\Path\MyProjct.sln" /p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)
在这条指令之后,如果编译成功,我只想执行其余的脚本.我怎么检查这个?
该项目是一个Web项目,因此检查输出并不容易,但我猜一些变量将包含编译结果.此外,因为我用cmd/c调用msbuild,我能够访问这些变量吗?
我有用户搜索记录类型的记录.他们在文本框中键入搜索词,然后通过将多个字段与搜索词匹配来搜索记录.
我的查询如下:
var results = from record in DataContext.Records
where
record.Field1.ToLower().Contains(term) ||
record.Field2.ToLower().Contains(term) ||
record.Field3.ToLower().Contains(term)
select record;
Run Code Online (Sandbox Code Playgroud)
我有许多查询都使用相同的过滤器,因此我想提取过滤,以便可以重复使用.就像是:
var filter = new Func<Record, string, bool>(
(record, term) =>
record.Field1.ToLower().Contains(term) ||
record.Field2.ToLower().Contains(term) ||
record.Field3.ToLower().Contains(term)
);
var results = from record in DataContext.Records
where filter(record, term)
select record;
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用,因为:
方法'System.Object DynamicInvoke(System.Object [])'没有支持的SQL转换.
如何跨查询重用where where条件?
当我尝试将电子邮件发送到包含突出字符(é)的地址时,SmtpClient.Send()方法抛出此异常:
System.Net.Mail.SmtpException:仅为具有ASCII本地部分的电子邮件地址配置客户端或服务器:léo.xxx@example.com.
在System.Net.Mail.Mail上的System.Net.Mail.MailAddress.GetAddress(布局allowUnicode)
中的System.Net.Mail.SmtpClient.ValidateUnicodeRequirement(MailMessage ...)(MailMessage ...
)
消息的制定使我可能有一个设置,我可以激活,以使这项工作,虽然我没有找到任何关于这个主题.
我尝试了几种SMTP服务器,包括Gmail.以下是repro的相关位:
码
var msg = new MailMessage();
msg.Subject = "Test";
msg.From = new MailAddress("xxx@gmail.com");
msg.To.Add(new MailAddress("léo.yyy@gmail.com"));
new SmtpClient().Send(msg);
Run Code Online (Sandbox Code Playgroud)
的app.config
<system.net>
<mailSettings>
<smtp from="xxx@gmail.com">
<network host="smtp.gmail.com" port="587" userName="xxx@gmail.com" password="password" enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud) 我正在使用Oracle 10g,我试图在CASE语句中"堆叠"条件,就像我在C++中所做的那样:
case 1:
case 2:
// instructions
break;
Run Code Online (Sandbox Code Playgroud)
即,为两个不同的成功条件执行相同的代码块.
我试过了 :
WHEN 1, 2 THEN
WHEN 1 OR 2 THEN
Run Code Online (Sandbox Code Playgroud)
......没有运气.它甚至可能吗?
编辑 - 完整片段
CASE v_n
WHEN (1 OR 2) THEN
dbms_output.put_line('Case 1 or 2');
WHEN 3 THEN
dbms_output.put_line('Case 3');
END CASE;
Run Code Online (Sandbox Code Playgroud)
生成表达式错误的类型错误
我有一个ASP.Net Web用户控件,其中包含一个TextBox和Ajax Control Toolkit中的日历.
当我在我的页面上包含这个用户控件时,我希望它参与输入验证(在UC内的TextBox上设置了一个必需的文件验证器),即.当页面被验证时,UC的内容也应该被验证.所以我让我的UC实现了IValidator接口,除了我无法在用户控件上设置验证组之外,它运行良好.显然我应该继承BaseValidator来做到这一点,但我不能,因为我已经继承了UserControl.
必须有办法处理这种常见情况.
我有一个存储过程,使用全文索引搜索产品(250,000行).
存储过程采用的参数是全文搜索条件.这个参数可以为null,所以我添加了一个空检查,查询突然开始运行速度慢了几个数量级.
-- This is normally a parameter of my stored proc
DECLARE @Filter VARCHAR(100)
SET @Filter = 'FORMSOF(INFLECTIONAL, robe)'
-- #1 - Runs < 1 sec
SELECT TOP 100 ID FROM dbo.Products
WHERE CONTAINS(Name, @Filter)
-- #2 - Runs in 18 secs
SELECT TOP 100 ID FROM dbo.Products
WHERE @Filter IS NULL OR CONTAINS(Name, @Filter)
Run Code Online (Sandbox Code Playgroud)
以下是执行计划:
查询#1

查询#2

我必须承认我对执行计划不太熟悉.对我来说唯一明显的区别是连接是不同的.我会尝试添加提示,但在我的查询中没有加入我不知道该怎么做.
我也不太明白为什么使用名为IX_SectionID的索引,因为它是一个只包含列SectionID的索引,并且该列不在任何地方使用.
sql-server performance sql-server-2008-r2 sql-execution-plan
.net ×3
c# ×3
sql-server ×2
asp.net ×1
interface ×1
linq-to-sql ×1
macros ×1
msbuild ×1
oracle ×1
performance ×1
plsql ×1
powershell ×1
reflection ×1
smtp ×1
smtpclient ×1
validation ×1