我有一个LINQ to SQL Query如下:
var carIds = from car in _db.Cars
where car.Color == 'Blue'
select car.Id;
Run Code Online (Sandbox Code Playgroud)
以上将最终翻译成下面的sql:
select Id from Cars
where Color = 'Blue'
Run Code Online (Sandbox Code Playgroud)
我读过这些阶段是:
所以,我的问题是何时以及如何翻译和执行?
我知道第4阶段发生在运行时,我的"carIds"变量在foreach循环中被访问.
foreach(var carId in carIds) // here?
{
Console.Writeline(carId) // or here?
}
Run Code Online (Sandbox Code Playgroud)
其他阶段呢?他们什么时候发生?在编译时或运行时?在哪一行(定义上或定义之后,访问时或访问之前)?
我有一个Windows服务,我已经编写了代码来在OnStart()事件中运行任务:
protected override void OnStart(string[] args)
{
this.DoTask();
}
private void DoTask()
{
Task task1 = Task.Factory.StartNew(() => this.OriginalFileProcessor.StartPolling());
try
{
Task.Wait(task1);
}
catch (Exception ex)
{
this.Log.Error("Failed running the task", ex);
}
}
Run Code Online (Sandbox Code Playgroud)
DoTask是一个永无止境的循环.它仅在服务停止时停止.
但是当我尝试启动服务时,它会等待很长时间然后给我以下错误:
Windows could not start the ... service on Local Computer.
Error 1053: The service did not respond to the start or control request in a timely fashion.
Run Code Online (Sandbox Code Playgroud)
怎么解决?
我有一个名为Products的Oracle表.它有一个ID类型的列NUMBER.
我想改变它的类型,Number(20, 0)但它给了我这个错误:
Run Code Online (Sandbox Code Playgroud)ORA-01440: column to be modified must be empty to decrease precision or scale
所以我用过这个脚本:
alter table Products add ID_TEMP NUMBER(20,0);
update Products set ID_TEMP = ID;
update Products set ID = NULL;
alter table Products modify ID NUMBER(20,0);
update Products set ID = ID_TEMP;
alter table Products drop column ID_TEMP;
Run Code Online (Sandbox Code Playgroud)
但它抱怨说
Run Code Online (Sandbox Code Playgroud)cannot update ID to NULL
这是合理的,因为它是一个不可为空的主键.
如何将其数据类型更改Number为Number(20, 0)?
在SharePoint 2003和2007中,有一个名为AllLists的表,其中有一个名为tp_Fields的列,其中包含一个包含特定列表的所有字段的xml.
存储在tp_Fields列中的xml示例对于包含3个字段的SharePoint列表是这样的:
<FieldRef Name="ContentTypeId" />
<FieldRef Name="_ModerationComments" ColName="ntext1" />
<FieldRef Name="WebPartTypeName" ColName="nvarchar9" />
Run Code Online (Sandbox Code Playgroud)
我们有一个应用程序正在使用C#代码从该列读取,例如
var tpFields = (String) drView["tp_Fields"];
Run Code Online (Sandbox Code Playgroud)
在SharePoint 2010中,此列的数据类型已更改为varbinary,而是仅包含一些二进制数据!
(我知道理想/推荐的解决方案是使用SharePoint Web服务或SharePoint对象模型而不依赖于基础表,但不幸的是我们有一个现有的应用程序,我们也需要使它与2010一起工作.我希望我们不必重新设计一切!)
我如何知道SharePoint列表中SharePoint数据库中的哪些字段?或者如果可能的话,如何将此varbinary列转换为与之前相同的xml?
我希望这个问题很明确(对它的可能性没什么希望).
谢谢,
使用==和!=运算符时,String对象的行为类似于Value类型,这意味着检查实际对象而不是引用.
参数传递,分配和复制怎么样?
字符串参数传递: 将引用类型传递给方法时,将复制其引用,但基础对象保持不变.
关于C#中的String类型也是如此吗?我的意思是有2个指针(messageVar和messageParam)指向下面代码中的同一个对象:
public static void main()
{
string messageVar = "C#";
Test(messageVar);
// what about in assignement?
string messageVar2 = messageVar;
}
public void Test(string messageParam)
{
// logic
}
Run Code Online (Sandbox Code Playgroud)
什么时候分配给变量?我猜,只能复制引用,并且实际对象在String Intern Pool中保持相同的状态.不确定.
messageVar2也会引用同一个对象吗?
谢谢,
我有一些使用NUnit,C#和Seleium编写的UI /系统测试,我正在使用TeamCity自动运行这些测试,例如每天一次.
问题是每个测试需要1-10分钟才能完成,而TeamCity会按顺序运行它们,因此需要很长时间才能完成所有测试.
(请不要担心或评论为什么测试需要这么长时间,因为它们是系统测试并为多个站点的多个用户运行)
测试是独立的,并且不依赖于彼此,因此它们可以同时运行.
如何将TeamCity配置为同时运行测试而不是逐个运行?
如何同时使用2个FireFoxDrivers?Selenium是否支持多线程?
我有以下测试打开2个firefox浏览器,但两个导航只发生在第一个浏览器实例上!
[Test]
public void TestMultithreading()
{
var tasks = new List<Task>
{
new Task(goToBbc),
new Task(goToGoogle)
};
tasks.ForEach(task => task.Start());
Task.WaitAll(tasks.ToArray());
}
private void goToBbc()
{
openBrowserAndGoTo("http://www.bbc.com");
}
private void goToGoogle()
{
openBrowserAndGoTo("http://www.google.com");
}
private void openBrowserAndGoTo(string url)
{
var webDriver = new FirefoxDriver();
webDriver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 1, 0));
webDriver.Navigate().GoToUrl(url);
Thread.Sleep(5000);
webDriver.Quit();
}
Run Code Online (Sandbox Code Playgroud)
希望问题很清楚.
谢谢,
是否有用于IE的免费工具,以便我可以知道页面的下载时间和下载大小?
我正在使用IE Web Developer工具,但没有显示下载时间/大小。
我想返回下面的xml:
<ResultDetails>
<Node1>hello</Node1>
<Sites>
<Site><SiteId>1</SiteId></Site>
<Site><SiteId>2</SiteId></Site>
</Sites>
</ResultDetails>
Run Code Online (Sandbox Code Playgroud)
我写了下面的代码,但不起作用:
SELECT 'hello' AS Node1,
(SELECT TOP 2 SiteId
FROM [dbo].[Sites]
FOR XML PATH('Site')) AS Sites
FOR XML PATH('ResultDetails')
Run Code Online (Sandbox Code Playgroud)
但它返回:
<ResultDetails>
<row>
<Node1>hello</Node1>
<Sites><Site><siteId>102</siteId></Site><Site><siteId>1</siteId></Site></Sites>
</row>
</ResultDetails>
Run Code Online (Sandbox Code Playgroud)
我应该写什么SQL?
谢谢,
在ASP.NET WebForms中,我使用Selenium在许多项目中记录和运行我的Web和UI测试.
我知道我们可以非常轻松地在ASP.NET MVC中单元测试控制器和模型.
视图怎么样?
你还会测试视图吗?如果不是如何确保由Controller Actions呈现的视图包含预期的逻辑和行为?
我猜想在WebForms中使用的Web测试工具,例如WatiN和Selenium,也可以在这里使用,不确定吗?
如果是这样,WebForms中的WebTesting和MVC中的WebTesting之间会有什么区别?
c# ×5
selenium ×2
sql ×2
testing ×2
xml ×2
.net ×1
add-on ×1
asp.net ×1
asp.net-mvc ×1
field ×1
firefox ×1
for-xml ×1
html ×1
installutil ×1
lambda ×1
linq ×1
nunit ×1
onstart ×1
operators ×1
oracle ×1
page-size ×1
sharepoint ×1
sql-server ×1
string ×1
teamcity ×1
unit-testing ×1
web-testing ×1
webdriver ×1