小编dud*_*er4的帖子

如何模拟 IConfiguration.GetValue

我试图模拟顶级(不是任何部分的一部分)配置值(.NET Core 的 IConfiguration),但徒劳无功。例如,这些都不起作用(使用 NSubstitute,但它与 Moq 或我相信的任何模拟包相同):

var config = Substitute.For<IConfiguration>();
config.GetValue<string>(Arg.Any<string>()).Returns("TopLevelValue");
config.GetValue<string>("TopLevelKey").Should().Be("TopLevelValue"); // nope
// non generic overload
config.GetValue(typeof(string), Arg.Any<string>()).Returns("TopLevelValue");
config.GetValue(typeof(string), "TopLevelKey").Should().Be("TopLevelValue"); // nope
Run Code Online (Sandbox Code Playgroud)

就我而言,我还需要GetSection从同一个配置实例调用。

c# nsubstitute .net-core

28
推荐指数
4
解决办法
1万
查看次数

使用Visual Studio配置Aurelia项目

我知道这是非常新的,但我想用Visual Studio创建一个使用aurelia的原型.VS支持位于漏斗中,但当前文档基于node.js等.根据现有文档,我没有任何线索.我希望我能得到一些指导......

aurelia

12
推荐指数
1
解决办法
1万
查看次数

EF永远需要生成此查询

我有一个父子表关系.在存储库中,我这样做:

return (from p in _ctx.Parents  
.Include( "Children" )  
select p).AsQueryable<Parent>();  
Run Code Online (Sandbox Code Playgroud)

然后在过滤器中,我想通过子ID列表过滤父项:

IQueryable<Parent> qry;  // from above
List<int> ids;  // huge list (8500)
var filtered =
from p in qry.Where( p => p.Children.Any(c => ids.Contains(c.ChildId)) ) select s;  
Run Code Online (Sandbox Code Playgroud)

我的ID列表很大.这会生成一个简单的SQL语句,它具有一个巨大的id"in(1,2,3 ...)"列表,但它本身不需要花费很多时间.然而,EF只需要整整一分钟来生成语句.我通过设置断点并调用来证明这一点:

((ObjectQuery<Parent>)filtered).ToTraceString();
Run Code Online (Sandbox Code Playgroud)

这需要所有的时间.这是我上一次linq声明中的问题吗?我不知道在(ids)中执行相当于Child.ChildId的任何其他方法.即使我的linq陈述不好,这个世界应该如何花这么长时间?

linq performance entity-framework

10
推荐指数
1
解决办法
293
查看次数

什么在我的EF上下文中将LazyLoadingEnabled设置为false?

首先使用EF5数据库.在创建我的上下文中,我设置ContextOptions.LazyLoadingEnabledtrue.有些事情发生了变化false(我们的代码中没有任何地方更改了设置).

在各个方面,我正在检查它是否仍然true使用这段代码(从实体对象获取上下文).该问题仅在运行多个线程时显示(加载一些实体,然后通过多线程代码传递它们).它不会出现在代码中的任何一致点上,因此无法确定究竟是什么导致它.

我想我只是希望有人可能对EF的内部运作有更多的了解并给我一些线索......

entity-framework entity-framework-5

10
推荐指数
1
解决办法
1733
查看次数

带重试的赛普拉斯请求

在 cypress 测试中,我需要通过调用外部 API 来验证操作。API 调用将始终返回结果(来自某些先前的运行),因此我不能简单地调用一次并验证结果。我需要重试几次,直到找到与当前运行相匹配的整体超时/失败。获得当前结果所需的时间差异很大;我真的不能在这个电话之前放一个疯狂的漫长等待。
请参阅下面片段中的评论;一旦我在循环中尝试请求,它就永远不会被调用。我使用cy.wait. 我也不能将实际请求包装在另一个返回Cypress.Promise或类似的函数中,这只会将问题向上推一个堆栈帧。

Cypress.Commands.add("verifyExternalAction", (someComparisonValue) => { 

    const options = {
      "url": some_url,
      "auth": { "bearer": some_apikey },
      "headers": { "Accept": "application/json" }
    };

    //// This works fine; we hit the assertion inside then.
    cy.request(options).then((resp) => {
      assert.isTrue(resp.something > someComparisonValue);
    });

    //// We never enter then.
    let retry = 0;
    let foundMatch = false;
    while ((retry < 1) && (!foundMatch)) {
      cy.wait(10000);
      retry++;
      cy.request(options).then((resp) => {
        if (resp.something > someComparisonValue) { …
Run Code Online (Sandbox Code Playgroud)

cypress

9
推荐指数
1
解决办法
4450
查看次数

F#Tuple Constant永远不会初始化

我已经宣布了这样一个元组:

module MyModule =
  let private INVALID_TUPLE = ("0", DateTime.MinValue)
Run Code Online (Sandbox Code Playgroud)

当我在模块中引用它时,它总是为null:

let private invalidForNone someOtherTuple =
  match someOtherTuple with
  | None -> INVALID_TUPLE  // it's null
  | Some(t) -> t
Run Code Online (Sandbox Code Playgroud)

此外,当我在元组声明上放置一个断点时,它永远不会命中.

如果我在脚本(fsx)文件中执行完全相同的操作,启动调试,执行,元组声明命中的断点以及对元组的引用是好的.

ILSpy for my module显示生成了一些启动代码,其中包含一个创建INVALID_TUPLE的Main方法.显然,这不是出于某种原因运行?

这是一个重现行为的示例(现在我意识到它与MSTest执行代码的方式有关).从C#单元测试中调用它; 结果将为null.实际上,F#代码中的断点根本不会执行.

module NullTupleTest
open System

let private INVALID_TUPLE = ("invalid", DateTime.MinValue)

let private TupleTest someTuple =
  match someTuple with
  | None -> INVALID_TUPLE
  | Some(dt) -> dt

let Main = TupleTest None
Run Code Online (Sandbox Code Playgroud)

f# program-entry-point tuples libraries

7
推荐指数
1
解决办法
94
查看次数

HTTP Handler使用Cassini,但不适用于IIS 6

我已经创建了一个示例项目来简化我的问题.我有这个简单的处理程序:

public class HandleThis : IHttpHandler, IRequiresSessionState
{

    public void ProcessRequest( System.Web.HttpContext context )
    {
        // Score.aspx just says "success"
        context.Response.Redirect( "Score.aspx" );
    }

    public bool IsReusable { get { return true; } }
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的配置中,我有这个:

<httpHandlers>
<add verb="*"
path="Survey"
type="HttpHandlerTest.HandleThis, HttpHandlerTest" />
Run Code Online (Sandbox Code Playgroud)

现在,当我点击http:// server/Survey我的处理程序触发时.

如果我将项目更改为使用IIS 6运行,则不会触发(404).我尝试通过以下方式在IIS中手动添加处理程序: - 网站属性 - 主目录 - 配置 - 添加(浏览到我的网站的.dll),扩展:调查,取消选中"验证文件是否存在"

我注意到IIS(如此有用)添加了"." 在我的扩展面前,所以我用"b.Survey"点击了网站; 仍然是404.

当然可以在IIS 6中添加处理程序吗?

asp.net iis-6 httphandler

6
推荐指数
1
解决办法
3853
查看次数

无法使用具有正常外键约束的TSQL输出?

以下代码段失败并显示错误:

OUTPUT INTO子句的目标表'dbo.forn'不能位于(主键,外键)关系的任何一侧.找到参考约束'FK_forn_prim'."

我只能通过禁用外键约束来使用输出?如何才能做到这一点?

IF OBJECT_ID ('dbo.forn') IS NOT NULL
begin
    alter table dbo.forn drop constraint FK_forn_prim
    DROP TABLE dbo.forn;
end
IF OBJECT_ID ('dbo.prim') IS NOT NULL
    DROP TABLE dbo.prim;
go

CREATE TABLE dbo.prim (c1 int PRIMARY KEY);
CREATE TABLE dbo.forn (c1 int CONSTRAINT FK_forn_prim FOREIGN KEY (c1) REFERENCES dbo.prim(c1));
go

INSERT INTO dbo.prim
    OUTPUT inserted.c1 INTO dbo.forn
SELECT 1;
Run Code Online (Sandbox Code Playgroud)

t-sql

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

这个EF Join方法调用出了什么问题?

我目前只限于在EF4数据存储库上使用扩展方法; 我不能使用linq来EF.我正在努力做一个简单的3表连接工作.这是代码:

var query = _readOnlyRepository.All<Parent>()
            .Where( p => p.Something == "something" )
            .Join( _readOnlyRepository.All<Child>(), // Child entity
                p => p.ParentID,                     // Parent Key
                c => c.ChildId,                      // Child Key
                ( p, c ) => c )                      // Projection
            .Join( _readOnlyRepository.All<GrandChild>(),
                c => m.ChildID,
                g => g.GrandChildID,
                ( c, g ) => g )
            .Select( joined => joined.Child.Whatever );  
Run Code Online (Sandbox Code Playgroud)

这是(基本上)生成的SQL:

select c2.Whatever
from Parent p
inner join Child c on p.ParentId = c.ParentId
inner join GrandChild g on c.ChildId = …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework-4

6
推荐指数
1
解决办法
819
查看次数

如何在Visual Studio中调试F#时设置条件断点

考虑一下:

let hank = "hank"
let bill = "bill"
printfn "%A" hank  // for breakpoint
Run Code Online (Sandbox Code Playgroud)

现在,如果我在VS2015中设置条件断点,条件为"hank = bill"(假设F#表达式),我收到以下错误:

断点的条件无法执行.条件是'hank = bill'.返回的错误是'断点条件必须求值为布尔运算'.

当条件是"hank == bill"(也许尝试C#表达式?)时,错误是:

断点的条件无法执行.条件是'hank == bill'.返回的错误是'运行时此时拒绝评估表达式.'.

f# visual-studio-2015

6
推荐指数
1
解决办法
310
查看次数