我总是想知道为什么equalslinq连接中有一个关键字而不是使用==运算符.
Property deadline =
(from p in properties
join w in widgets
on p.WidgetID equals w.ID
select p).First();
Run Code Online (Sandbox Code Playgroud)
代替
Property deadline =
(from p in properties
join w in widgets
on p.WidgetID == w.ID
select p).First();
Run Code Online (Sandbox Code Playgroud)
[编辑]重新提出问题并修改了示例.
我正在进行单元测试的第一步,并且不确定两个在单元测试中似乎自相矛盾的范例,即:
更具体一点,我有一个我想测试的进口商.导入器具有"导入"功能,可以获取原始数据(例如,从CSV中删除)并返回某种类型的对象,该对象也将通过ORM(在本例中为LinqToSQL)存储到数据库中.
现在我想测试几件事情,例如返回的返回对象不为null,它的必填字段不为null或为空,并且它的属性得到了正确的值.我为此写了3个单元测试.每个测试应该导入并获得作业还是属于一般的设置逻辑?另一方面,相信这篇博文,就我的理解而言,后者将是一个坏主意.此外,这不会违反自我遏制吗?
我的班级看起来像这样:
[TestFixture]
public class ImportJob
{
private TransactionScope scope;
private CsvImporter csvImporter;
private readonly string[] row = { "" };
public ImportJob()
{
CsvReader reader = new CsvReader(new StreamReader(
@"C:\SomePath\unit_test.csv", Encoding.Default),
false, ';');
reader.MissingFieldAction = MissingFieldAction.ReplaceByEmpty;
int fieldCount = reader.FieldCount;
row = new string[fieldCount];
reader.ReadNextRecord();
reader.CopyCurrentRecordTo(row);
}
[SetUp]
public void SetUp()
{
scope = new TransactionScope();
csvImporter = new CsvImporter();
}
[TearDown]
public void TearDown()
{
scope.Dispose();
}
[Test]
public void ImportJob_IsNotNull()
{ …Run Code Online (Sandbox Code Playgroud) 您认为值得在源代码文件开头的注释中添加哪些信息?
我能想到的只是作者的名字,也许是文件创建的日期(尽管我不确定这些信息是否有任何有用的价值).
[编辑]为了澄清,我不是指在课前的评论,而是在文件的第一行,包括语句之前和其他什么.喜欢
/**
* Author: Name
* Created: 11.05.2009
*
* (c) Copyright by Blub Corp.
**/
Run Code Online (Sandbox Code Playgroud) 当我尝试导入多个数据记录时,我注意到今天导入服务中出现了一个奇怪的行为.
当我这样做时,导入所有数据记录并且自动递增的值是正确的(参见屏幕截图):
public void Create(List<Property> properties)
{
foreach (Property prop in properties) {
dbc.Property.InsertOnSubmit(prop);
dbc.SubmitChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样尝试时,只有第一个数据记录得到一个正确的自动递增值(见截图):
foreach (Property prop in properties) {
dbc.Property.InsertOnSubmit(prop);
}
dbc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
同样在这里:
dbc.Property.InsertAllOnSubmit(properties);
dbc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么会这样?根据我的理解,所有三个变体都应该导入所有数据记录,但缺少的自动递增值表明它不是那样.
[编辑]添加了两个截图.
c# ×3
comments ×1
equals ×1
insert ×1
join ×1
linq ×1
linq-to-sql ×1
nunit ×1
sql-server ×1
unit-testing ×1