小编Mic*_*ent的帖子

Linq:连接中==和equals有什么区别?

我总是想知道为什么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)

[编辑]重新提出问题并修改了示例.

c# linq join equals

38
推荐指数
2
解决办法
2万
查看次数

单元测试:自包含测试与代码重复(DRY)

我正在进行单元测试的第一步,并且不确定两个在单元测试中似乎自相矛盾的范例,即:

  • 每个单元测试都应该是独立的,而不是依赖于其他测试.
  • 不要重复自己.

更具体一点,我有一个我想测试的进口商.导入器具有"导入"功能,可以获取原始数据(例如,从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)

c# nunit unit-testing

7
推荐指数
2
解决办法
2184
查看次数

在源代码文件顶部的注释中放入哪些信息?

您认为值得在源代码文件开头的注释中添加哪些信息?

我能想到的只是作者的名字,也许是文件创建的日期(尽管我不确定这些信息是否有任何有用的价值).

[编辑]为了澄清,我不是指在课前的评论,而是在文件的第一行,包括语句之前和其他什么.喜欢

/**
 * Author:    Name
 * Created:   11.05.2009
 * 
 * (c) Copyright by Blub Corp.
 **/
Run Code Online (Sandbox Code Playgroud)

comments

6
推荐指数
2
解决办法
7982
查看次数

InsertAllOnSubmit仅插入第一个数据记录

当我尝试导入多个数据记录时,我注意到今天导入服务中出现了一个奇怪的行为.

当我这样做时,导入所有数据记录并且自动递增的值是正确的(参见屏幕截图):

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# sql-server insert linq-to-sql

5
推荐指数
1
解决办法
4712
查看次数

标签 统计

c# ×3

comments ×1

equals ×1

insert ×1

join ×1

linq ×1

linq-to-sql ×1

nunit ×1

sql-server ×1

unit-testing ×1