C# C IsNull()和IsEqualTo()-Visual Studio在示例Dapper.net/Contrib代码中无法识别它们

C# C IsNull()和IsEqualTo()-Visual Studio在示例Dapper.net/Contrib代码中无法识别它们,c#,dapper,dapper-rainbow,C#,Dapper,Dapper Rainbow,我敢肯定我在这里真的很愚蠢,但我正在变得得体和有计划。示例代码包括以下行: using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)) { connection.Get<User>(3).IsNull(); var id = connec

我敢肯定我在这里真的很愚蠢,但我正在变得得体和有计划。示例代码包括以下行:

 using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
        {
            connection.Get<User>(3).IsNull();

            var id = connection.Insert(new User { Name = "Adam", Age = 10 });
IsNull永远不会被识别。艾斯夸尔托也不在同一背景下

我在谷歌上搜索过——没有什么特写,在对象浏览器中搜索过——我正在使用Dapper——并且使用Dapper.Contrib.Extensions;但是它找不到它


thx

这些实际上是正在使用的测试框架中的方法。它们实际上是断言;IsNull断言左边的值为null,否则抛出异常。IsEqualTo断言左边的值等于传递给方法的值,否则抛出异常

真正的代码不需要这些方法。我猜这个例子是从一个测试方法中提取出来的,在这个测试方法中,它被用来确认插入前后数据的状态

我想到AssertNull和AssertEqualTo可能是更好的名称

代码是在;也可以通过以下方式调用它们:

Assert.IsNull(connection.Get<User>(3));
...
Assert.IsEqualTo(someObj.SomeProp, 42);

等等,在这种情况下,意图将更加明显。它们是扩展方法这一事实隐藏了一点细节,特别是在本例中,声明类型是Assert这一事实。

连接字符串是什么?它位于作为xml文件的项目配置设置中。标记是DefaultConnection。您正在连接到SQL Server,并且该服务器的名称位于连接字符串中,并且必须有效,并且与您正在使用的服务器的实例相匹配。该连接字符串指向SQL Server实例-该实例工作正常,不会导致错误我可以在注释isNull行时插入数据-我只想知道isNull和IsEqualTo from右键单击获取,然后选择“转到定义”。它位于Dapper.Contrib.extensions布尔状态=connection.Get3.IsNull;我怀疑IsNull将创建一个异常,该异常由“using”处理,因此当配置文件中未定义连接时,应用程序不会停止。+1我们的内部框架中有类似的方法,可以帮助ReSharper更正确地标记代码,这些代码在发布版本中编译,但在任何情况下,生产代码都不应该包含对单元测试框架的引用。。。除非您正在构建执行测试的代码。@LasseV.Karlsen,否则所讨论的方法甚至不是核心库项目的一部分;它们仅在测试项目中。您不能引用测试项目,因为我们没有发布它。我同意你的观点——它在这里并不适用:我的观点是我同意你的观点:它在我头脑中的翻译中丢失了。我想更多的咖啡。@LasseV.Karlsen一定很喜欢这种[有条件的]用法,尽管我假设这就是您所描述的,尽管它也可能是一种在发行版中缺少实现的局部方法;对于只调试的代码非常强大-比用if-debug填充代码漂亮得多。@niico如果是我,我只会注释掉对这些方法的调用,这些方法没有做任何有用的事情-任何看起来像断言的东西可能都不需要