小编Bal*_*tar的帖子

未创建 EntityFrameworkCore SQLite 内存数据库表

对于集成测试,我使用EntityFrameworkCore SQLite内存数据库并根据 Microsoft 文档创建其架构,但是当我尝试播种数据时,会抛出表不存在的异常。

鼠标悬停文档DbContext.Database.EnsureCreated();

确保上下文的数据库存在。如果存在,则不执行任何操作。如果它不存在,则创建数据库及其所有模式。如果数据库存在,则不会采取任何措施来确保它与此上下文的模型兼容。

我已经读到EntityFrameworkCore内存中的数据库只存在于打开的连接时才存在,所以我尝试显式创建一个var connection = new SqliteConnection("DataSource=:memory:");实例并将下面的代码包装在一个using(connection) {}块中并传递连接实例options.UseSqlite(connection);,但DbContext.Database.EnsureCreated();仍然没有创建任何数据库-对象

public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<Startup>
{
    protected override IWebHostBuilder CreateWebHostBuilder()
    {
        return WebHost.CreateDefaultBuilder()
            .UseStartup<Startup>();
    }

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
      using (var connection = new SqliteConnection("DataSource=MySharedInMemoryDb;mode=memory;cache=shared"))
      {
          connection.Open();
          builder.ConfigureServices(services =>
          {
              var serviceProvider = new ServiceCollection()
                  .AddEntityFrameworkSqlite()
                  .BuildServiceProvider();

              services.AddDbContext<MyDbContext>(options =>
              {
                  options.UseSqlite(connection);
                  options.UseInternalServiceProvider(serviceProvider);
              });

              var contextServiceProvider = services.BuildServiceProvider();

              // we need a scope …
Run Code Online (Sandbox Code Playgroud)

c# sqlite integration-testing in-memory-database entity-framework-core-2.2

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

GitHub for Windows:如何取消设置svn-remote.svn.url

从我本地仓库的路径的cmd行,我执行了git svn clone命令但是使用了错误的URL.

然后我尝试git svn clone用正确的url 执行,但我不能,因为它告诉我"svn-remote.svn.url already set"

我该怎么svn-remote.svn.url办?

svn git github git-svn github-for-windows

5
推荐指数
2
解决办法
6521
查看次数

PowerShell:更改本地管理员密码

登录$ComputerName为本地管理员Windows Server 2008 R2 SP1

这个脚本:

$admin=[adsi]("WinNT://" + $ComputerName + "/administrator, user")
$admin.psbase.invoke("SetPassword", $Password)
$admin.psbase.CommitChanges()
Run Code Online (Sandbox Code Playgroud)

本地运行抛出异常: Exception calling "Invoke" with "2" argument(s):"The network path was not found"

powershell

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

如何模拟通过require创建的对象

我是node.js的新手,在大多数代码中,我看到我没有看到IoC/DI样式构造函数注入依赖项.

相反,通常node.js扩展名require()用于创建允许访问外部模块导出的本地变量.

但是在编写单元测试(隔离单层/函数)时,如何模拟通过使用require创建的变量访问的模块?

/helpers/dataHelper.js

var dataModel = require('../models/dataModel.js');

var getFormattedDataForRegion = function(region, callback) {
    var data = {};
    // validate region
    // query dataModel
    // async.map format data items
    // callback(data);
}

/tests/dataHelperTests.js

describe('dataHelper', function(){

    it('getFormattedDataForRegion returns expected response', function(done){

        var expectedData = {};
        // populate expectedData

        // **** need some way to mock dataModel *****

        dataHelper.getFormattedDataForRegion("west", function(data){
            expect(data).to.eql(expectedData);
            done();
        });
    });
Run Code Online (Sandbox Code Playgroud)

javascript mocking mocha.js node.js

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

给定预定义顺序的字符串列表

我有一系列颜色,我想按顺序排序.但是,我不想使用它们的"自然"排序对它们进行排序,而是将它们保持在这个顺序中:

var order = ['white', 'yellow', 'violet', 'blue', 'orange', 'red', 'maroon', 'brown', 'black'];
Run Code Online (Sandbox Code Playgroud)

因此,例如,对此数组进行排序

var items = ['blue', 'violet', 'white', 'black', 'orange'];
Run Code Online (Sandbox Code Playgroud)

应该回馈

['white', 'violet', 'blue', 'orange', 'black'];
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所拥有的:

var itemsInOrder = [];

for (var i=0; i<order.length; i++) {
    if (items.indexOf(order[i]) > -1) {
        itemsInOrder.push(order[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定它的扩展程度如何 - 如果order有100或1000个元素,但'项目'有10个?

什么是实现这一目标的良好,可扩展的方法?

javascript sorting time-complexity

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

以编程方式删除 .git .idx .pack 文件

在 Windows Server 2008 上运行的 ASP.NET C# 应用程序

我发现 Git .idx 和 .pack 文件对程序删除特别有抵抗力:

C:\github\my-org\my-repo\.git\objects\pack\pack-905fbcfd5f24c5711de900f3946b4137d26df6d5.idx

C:\github\my-org\my-repo\.git\objects\pack\pack-905fbcfd5f24c5711de900f3946b4137d26df6d5.pack

git clone 操作将文件创建为只读 - 但即使关闭该位,删除仍然有问题:

var path = @"C:\github\my-org\my-repo\.git\objects\pack\pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx";

File.SetAttributes(path , FileAttributes.Normal);
File.Delete(path);
Run Code Online (Sandbox Code Playgroud)

File.Delete(path) 代码抛出异常:

拒绝访问路径“pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx”。

由于路径不在我的站点目录中,我想知道 ASP.NET 站点 AppPool 工作进程标识是否需要明确分配权限以写入/删除其应用程序域之外的文件夹/文件?

请注意,在我的 Windows 7 本地工作站上,调用删除目录操作的 nUnit 测试运行绿色。在调试器中,我可以证明一旦从所有文件(如果存在)中删除只读属性,Directory.Delete(path,true) 操作就不会抛出。

windows git file

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

ASP.NET 标头集合支持多个具有相同字段名称的标头集合

IETF RFC 允许请求包含具有相同字段名称的多个标头,只要保留顺序并且值可以转换为具有逗号分隔值列表的单个标头

https://www.rfc-editor.org/rfc/rfc2616#section-4.2


当且仅当该
头字段的整个字段值被定义为逗号分隔列表[即#(values)]时,具有相同字段名称的多个消息头字段可以出现在消息中。 通过将每个后续字段值附加到第一个字段值(每个字段值之间用逗号分隔)
,必须可以将多个标头字段组合成一个
“字段名称:字段值”对,而不更改消息的语义。
因此,具有相同字段名称的头字段的接收顺序
对于组合字段值的解释很重要
,因此当转发消息时,代理不得更改这些字段值的顺序。

ASP.NET 如何处理具有相同字段名称的多个标头的存在?

HttpContext.Current.Request.Headers[]
Run Code Online (Sandbox Code Playgroud)

Headers[]是一个System.Collection.Specialized.NameValueCollection键值对的集合,其中值实际上可能是值的集合。

但尚不清楚如何从请求标头中解构多个值:集合是通过解析单个值的逗号分隔列表构造的吗?或者它是从具有相同字段名称的一个或多个标头的集合中解构的?

c# asp.net collections header request

5
推荐指数
0
解决办法
889
查看次数

在 C# Visual Studio 中编译协议缓冲区 3 时间戳类型?

Visual Studio 2015 
C#
NuGet Packages : 
Google.Protobuf v3.0.0 
Google.Protobuf.Tools v3.0.0
Run Code Online (Sandbox Code Playgroud)

消息类型 Quake

syntax = "proto3";
import "google/protobuf/timestamp.proto";
message Quake {
  google.protobuf.Timestamp _timestamp = 1;
  double magnitude = 2;
}
Run Code Online (Sandbox Code Playgroud)

timestamp.proto 包含在同一个文件夹中

protoc 3.0.2 命令行编译成功

但是VS右键单击proto文件并选择“运行自定义工具”失败,错误“自定义工具'ProtoBufTool'失败。”

从 Visual Studio 中生成 C# 类?

c# timestamp protocol-buffers protobuf-csharp-port protocol-buffers-3

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

protobuf-net:如何在 C# 中表示 DateTime?

protogen.exeproto2为类型的消息字段生成此模式long

private long _Count = default(long);
[global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"Count", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
[global::System.ComponentModel.DefaultValue(default(long))]
public long Count
{
  get { return _Count; }
  set { _Count = value; }
}
Run Code Online (Sandbox Code Playgroud)

但由于proto2不包含日期时间类型(并且protobuf-net不支持proto3包含google.protobuf.Timestamp),因此不清楚如何DateTime在手动编码的 C# proto 对象中表示。

这可能是错误的:

private DateTime _When = DateTime.MinValue;
[global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"When", DataFormat = global::ProtoBuf.DataFormat.Default)]
[global::System.ComponentModel.DefaultValue(DateTime.MinValue)]
public DateTime When
{
  get { return _When; }
  set { _When = value; }
} …
Run Code Online (Sandbox Code Playgroud)

c# datetime timestamp protocol-buffers protobuf-net

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

Karma 无法加载浏览器启动器

 [launcher]: Cannot load browser "FireFox": it is not registered! Perhaps you are missing some plugin?
Run Code Online (Sandbox Code Playgroud)

我已遵循所有步骤(我所知道的):

npm install karma-firefox-launcher --save-dev
Run Code Online (Sandbox Code Playgroud)

karma.conf.js

plugins: [
  require('karma-jasmine'),
  require('karma-firefox-launcher'),
  require('karma-ie-launcher'),
  require('karma-jasmine-html-reporter'),
  require('karma-coverage-istanbul-reporter'),
  require('@angular-devkit/build-angular/plugins/karma')
],
Run Code Online (Sandbox Code Playgroud)

\node_modules\karma-firefox-launcher\按预期存在

package.json

  "devDependencies": {

    "karma-firefox-launcher": "^1.1.0",
Run Code Online (Sandbox Code Playgroud)

注意:启动 IE 浏览器没有问题

这可能是一个误导性错误,而真正的问题是 Karma 找不到 Firefox.exe 吗?

firefox plugins karma-runner angular

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