小编gza*_*zak的帖子

开发多个Visual Studio 2010扩展

我在单独的解决方案中处理几个独立的Visual Studio扩展.当我打开其中一个并在调试器中启动实验实例时,也会加载其他解决方案(未打开)的其他扩展.必须有一种方法只能在实验实例中一次启动一个扩展(特别是您当前正在处理的扩展),对吧?

vsx visual-studio-2010 visual-studio-extensions

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

在使用ASP.NET Core进行集成测试期间使用多个环境

这是测试项目的launchSettings.json文件:

{
  "profiles": {
    "test": {
      "commandName": "test",
      "environmentVariables": {
        "Hosting:Environment": "Development"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

测试项目依赖于服务器项目,并使用服务器项目的Startup类直接初始化测试,如下所示:

Server = new TestServer(TestServer.CreateBuilder().UseStartup<Startup>());
Client = Server.CreateClient();
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,当我Startup.Configure在调试器中输入方法时,env.EnvironmentName是生产.我应该在哪里设置测试.xproj的环境名称?

在相关的说明中,我是否应该Startup在测试项目中拥有该类的本地测试版本?文档似乎暗示......否则appsettings会从何而来?他们没有将测试项目显示为在本地拥有appsettings的副本,但我非常确定Startup该类(无论是重用还是本地)都需要它.请指教.

xunit visual-studio-2015 dnx asp.net-core

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

带有EF Core和内存数据库提供程序的原始SQL

我的API路由之一使用了原始sql merge into命令来进行原子upsert操作,并且在我的自动化测试中,TestServer使用内存db提供程序实例。它给我一个错误,可能是因为内存提供程序不支持运行原始sql命令-是这样吗?如果没有,我如何使它工作?

这是Startup测试的课程:

// In memory DB for testing
services.AddDbContext<MyContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("stuff"));
services.AddDbContext<MyStatusContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("status"));
services.AddDbContext<MyUserRolesContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("userroles"));
Run Code Online (Sandbox Code Playgroud)

API代码符合您的期望:

var count = await context.Database.ExecuteSqlCommandAsync(@"merge into ...", default(CancellationToken), ...);
return count;
Run Code Online (Sandbox Code Playgroud)

这段代码在实际数据库中的生产环境中运行良好,但是我无法在测试中与内存提供程序一起使用。我有什么希望吗?自定义sql脚本的通常测试策略是什么?

sql in-memory-database entity-framework-core

4
推荐指数
2
解决办法
1866
查看次数

每个类型的表继承插入问题

我按照这篇文章为我的实体制作了每个类型的表继承模型,但是当我尝试将子类的实例添加到数据库时,我收到以下错误.

以下是我创建子类型的方法:

var cust = db.Users.CreateObject<Customer>(); // Customer inherits User
db.Users.AddObject(cust);
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

我拨打最后一个电话时收到以下错误:

"在不止一个位置生成跨实体或关联共享的值.检查映射是否不会将EntityKey拆分为多个存储生成的列."

具有以下内部异常:

"已经添加了具有相同键的项目."

关于我可能遗失的任何想法?

更新了REPRO STEPS

创建了一个空白的MS SQL Server 2008 R2数据库,并添加了以下两个表:

用户

  • Id:bigint(PK并将其设置为标识列)
  • 名称:nvarchar(25)NOT NULL(无论如何,一些随机属性

顾客

  • Id:bigint(PK,标识列和Users.Id上的FK)
  • 标题:nvarchar(25)NOT NULL(也是什么,一些随机属性)

接下来,我从数据库生成了.edmx实体模型,并按照顶部的链接逐字.也就是说,我删除了User和Customer之间的关联,将User设置为Customer的基类,从Customer实体中删除了Id属性,并确保Customer.Id列已映射到继承的User.Id属性.然后我运行了以下小程序:

using (var db = new EF_Test.testEntities())
{
    var cust = db.Users.CreateObject<Customer>();
    db.Users.AddObject(cust);
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

我得到了与上述相同的例外情况.如果这个repro对你有用,请告诉我,如果有,那我做错了.我在这个问题上被封锁了.

.net c# entity-framework entity-framework-4 c#-4.0

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

重命名svn中的目录

我有一个像这样的文件夹结构:

A/B/C/hello.txt
Run Code Online (Sandbox Code Playgroud)

我使用svn mv将A重命名为Z:

Z/B/C/hello.txt
Run Code Online (Sandbox Code Playgroud)

然后我对hello.txt进行了一些修改.现在,svn状态给出:

D    A/B/C/hello.txt
A+   Z
M+   Z/B/C/hello.txt
Run Code Online (Sandbox Code Playgroud)

当我尝试提交时,我收到以下错误消息:

'Z/B/C' is not under version control and is not part of the commit, yet its child 'Z/B/C/hello.txt' is part of the commit
Run Code Online (Sandbox Code Playgroud)

svn rename

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

在MySQL中将二进制(16)列显示为十六进制

给定一个binary(16)列,如何将其值显示为十六进制数?我一直在下面的控制台中进行实验,但未获得预期的结果。可能是我没有将数字正确转换为二进制吗?

我有以下示例查询:select hex(cast(10 as binary))

但输出是相当意外:3130

基本上,它似乎只是采用数字的十进制表示形式,并3在每个数字之前插入一个数字,例如2-> 3222-> 3232678-> 363738等。

如果我为二进制数据类型指定了一个长度(例如binary(16)),我将得到相同的行为,只是在右边用所需的0s 填充。

显然,这不是我想要的。我想念什么?

编辑:只是尝试convert(678, binary)而不是cast,相同的行为。

mysql binary hex

3
推荐指数
3
解决办法
7612
查看次数

关闭Velocity模板宏

我有一些像这样的Velocity宏:

#macro(Alpha)
  #set($p = 1)
  #@Beta()
    $p             // 1
    $bodyContent
  #end
#end

#macro(Beta $params)
  #set($p = 2)
  $p               // 2
  $bodyContent
#end
Run Code Online (Sandbox Code Playgroud)

而我正在使用它们:

#set($p = 0)
#@Alpha(...)
  $p               // 3
#end
Run Code Online (Sandbox Code Playgroud)

我相信这样渲染(忽略格式化):2,2,2

但我希望有适当的关闭行为,包括隐藏父范围名称的更多本地范围名称.特别是,标记为'3'的$ p的使用应该是值0,'2'表示值2,'1'表示值1.

给定正确的闭包语义,它将打印:2,1,0

有没有办法得到这个,或者一种方法来实现自定义指令/修改#macro指令行为来实现这一目标?

templates closures velocity

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

在 SignalR 2 中声明身份

我正在尝试从使用 SignalR 的 ASP.NET MVC5 获得基于声明的授权,并且我遵循了本教程:

http://www.asp.net/signalr/overview/signalr-20/security/hub-authorization

我尝试Authorize了集线器上的 vanilla属性以及AuthorizeClaimsAttribute它们作为示例提供的自定义类,但它们似乎都不起作用。

在后一种情况下,IPrincipal user参数以 null 形式出现。事实上,request.GetOwinContext()扩展方法返回的整个上下文似乎都没有初始化,所以试图通过对象“免费”获取它是行不通的。

但是,我确实在请求标头中看到了这些 cookie:

  • .AspNet.ApplicationCookie
  • __RequestVerificationToken
  • ASP.NET_SessionId

所有这些都包含Microsoft.AspNet.SignalR.Cookie.

是让这个工作来做我自己的 cookie 解析/解密的唯一方法吗?如果是这样,如何?

claims-based-identity signalr asp.net-mvc-5

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