我试图使用LINQ迭代一个IEnumerable对象,并将每个对象的某个属性拉出到该属性类型的IEnumerable中.
我目前正在使用SelectMany LINQ表达式,但不是返回IEnumerable<string>我想要的(因为属性是一个字符串),它返回一个IEnumerable<char>
var propertyValues = objectCollection.SelectMany(o => o.Value);
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在尝试使用流畅的迁移器使用我的项目进行迁移.但由于缺乏文档,我正在努力弄清楚如何回滚并Down为我的迁移类调用该方法.
我使用初始版本1类设置数据库:
[Migration(1)]
public class Baseline : Migration
{
public override void Up()
{
Execute.Script("1_Baseline\\baseline.sql");
}
public override void Down() { }
}
Run Code Online (Sandbox Code Playgroud)
我正在通过包含以下内容的批处理文件运行迁移:
"....\tools\fluentmigrator\migrate.exe" - connect"Data Source =.\ sqlexpress; Initial Catalog = ekmDomains; Integrated Security = true; multipleactiveresultsets = true;" --db SqlServer2005 --target"bin\Release\EkmDomains.Migrations.dll"
这很好用.然后我写了第二个迁移类来测试它:
[Migration(2)]
public class AddNewTable : Migration
{
public override void Up()
{
Create.Table("NewTable").WithColumn("name").AsString();
}
public override void Down()
{
Delete.Table("NewTable");
}
}
Run Code Online (Sandbox Code Playgroud)
再次运行批处理文件后,一切正常.然后,我查看了流畅的迁移器工具的命令行选项,并看到了一个--version选项.我认为回滚到以前的版本我想简单地提供--version 1和Down的AddNewTable将被调用.然而,这并没有发生.控制台只显示"提交事务"方法然后关闭.但该表尚未删除,版本号未更改.
我这样做的方式是错误的,还是有人能看到我这样做的一些根本缺陷?
我正在使用requirejs开发单页骨干应用程序,今天当我部署到我们的beta服务器时,我发现初始页面加载大约20秒,同时它获取了所有脚本.
我假设这是因为我在定义模块时使用了依赖数组:
define([
'ui',
'models/user',
'collections/campaigns',
'collections/groups',
'collections/keywords',
'collections/inboxes',
'collections/templates',
'collections/contacts',
'router'
], function (Ui, UserDetails, Campaigns, Groups, Keywords, Inboxes, Templates, Contacts, Router) {
return {
start: function () {
// ...
// initialize and start app
// ...
}
}
});
Run Code Online (Sandbox Code Playgroud)
我认为这意味着当加载主应用程序模块时,每个其他脚本都会被加载,因为每个模块都使用这种方法.
然后我改变了获取模块的方法来获取它们,因为我需要它们require('...')时直接调用我需要它们:
define(function (require) {
return Backbone.Router(function () {
// ...
// route initializtion etc
// ...
inbox: function (routeVar) {
var InboxView = require('InboxView');
this.inboxView = new InboxView();
// render view etc
}
});
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的应用程序返回适当的Http代码和响应,但我正在努力.似乎有两种方法可以返回特定的http响应.
我想要处理它的方式是扔一个HttpResponseException:
public Information Get(int apiKey)
{
if (!_users.Authenticate(apiKey))
{
var response = new HttpResponseMessage();
response.StatusCode = (HttpStatusCode)401;
response.ReasonPhrase = "ApiKey invalid";
throw new HttpResponseException(response);
}
return _info.Get();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我看到的响应只是一个空的200响应!
您似乎也可以更改操作方法的签名以返回HttpResponseMessage如下所示:
public HttpResponseMessage Get()
{
if (!_users.Authenticate(apiKey))
{
return Request.CreateResponse((HttpStatusCode) 401, "ApiKey invalid");
}
return Request.CreateResponse((HttpStatusCode) 200, _info.Get());
}
Run Code Online (Sandbox Code Playgroud)
我真的不想这样做,如果我可以帮助它,我宁愿把我的返回类型作为我试图检索的对象而不是每次都包装它HttpResponseMessage.
有没有理由为什么第一个方法返回一个空的200而不是401我想要它的消息?
我有一个控制器,Groups其中包含以下操作:
public GroupModel Get(int ID)
public GroupModel Post(CreateGroupModel model)
public void Put(PublicUpdateGroupModel model)
public void PutAddContacts(UpdateContactsModel model)
public void PutRemoveContacts(UpdateContactsModel model)
public void Delete(int ID)
Run Code Online (Sandbox Code Playgroud)
我想做的是使用标准的REST路由来调用标准的get,post,put,delete mehods.但拨打PutAddContacts和PutRemoveContacts如果动作名称添加到URL,例如:
获取组/ - 调用Get方法
POST组/ - 调用Post方法
PUT组/ - 调用Put方法
DELETE groups/ - 调用Delete方法
PUT groups/addcontacts - 调用PutAddContacts方法
PUT groups/removecontacts - 调用PutRemoveContacts方法
是否可以设置路由来执行此操作,或者如果我想在URL中使用操作名称,是否需要沿着RPC路由进行路由?
我正在尝试设置我的应用程序以使用Entity Framework和PostgreSQL,但我遇到了一个问题.我已经Npqsql通过nuget添加了,并将以下提供程序工厂添加到web.config:
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider"
invariant="Npgsql"
description=".Net Framework Data Provider for Postgresql Server"
type="Npgsql.NpgsqlFactory, Npgsql,
Version=2.0.12.0, Culture=neutral,
PublicKeyToken=5d8b90d52f46fda7" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
使用连接字符串:
<add name="MyDb" providerName="Npgsql"
connectionString="Server=localhost;Port=5432;Database=withoomph;User ID=postgres;Password=******;enlist=true" />
Run Code Online (Sandbox Code Playgroud)
它似乎很好地连接到数据库,但当我尝试在数据库上执行任何类型的操作时,我得到以下异常:
FATAL: 3D000: database "withoomph" does not exist
当db设置如下时,我正在正确设置数据库intitializer:
static MyDB()
{
Database.SetInitializer<MyDB>(new CreateDatabaseIfNotExists<MyDB>());
}
Run Code Online (Sandbox Code Playgroud)
所以当我尝试用我的DbContext权利做任何事情时,它应该只是简单地创建数据库?我不明白,整个早上都拔我的头发!
标题基本概括了所有内容.我正在使用font squirrel生成font-face工具包,我在Safari中遇到字母间距问题.
由于webkit浏览器渲染SVG字体比WOFF字体好得多,我显然想要使用SVG.但是我注意到字母间距似乎在Safari中不起作用.这是一个已知的问题?
它在Lucene文档中指出,在应用程序中使用IndexWriter和IndexSearcher的一个实例是最快的.
目前我有一个静态的IndexWriteropen 实例,并且它的静态实例IndexSearcher始终保持打开状态,但是如果IndexWriter对索引执行任何CRUD操作则重建.我已经实施了关闭两个在我的索引管理类Dispose方法IndexWriter,并IndexSearcher在应用程序结束(但它是一个Web应用程序,所以这是有可能不被调用运行的几个月).
这听起来像是合理的做事方式吗?并且使用静态实例也存在多线程问题..?即我在使用时应该锁定我的作家和搜索者吗?
我想处理WebAPI操作方法中的异常,通过捕获它们设置状态代码,并将消息写入响应.通常在正常的MVC中Controller我会这样做,使用Controller的Response属性:
Response.StatusCode = 404;
Response.Write("Whatever");
Run Code Online (Sandbox Code Playgroud)
但似乎ApiController没有任何Response财产.是否有一个原因?可以这样使用HttpContext.Current.Response:?
HttpContext.Current.Response.StatusCode = 404;
HttpContext.Current.Response.Write("Whatever");
Run Code Online (Sandbox Code Playgroud)
或者是否有一种特定的方式来写入WebAPI控制器的响应?
我正在尝试为我的 web api 控制器编写一些单元测试,我需要测试 cookie 是否被正确检索,所以我想设置一个模拟来返回我想要测试的 cookie。在 WebAPI 中像这样检索 Cookie:
Request.Headers.GetCookies("CookieName").FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
request 对象是可模拟的,但不幸的是,我无法模拟 headers 属性(它是一个HttpRequestHeaders对象),因为它HttpRequestHeaders是密封的,而且它的方法都不是虚拟的,而且它也没有实现接口(MS 干得好)。
有没有办法模拟 WebAPI 中 cookie 的获取/设置?
ps 我不想听到我不应该在 WebAPI 中使用 cookie,这就是正在做的事情,改变它超出了我目前的工作范围
c# ×8
.net ×4
asp.net-mvc ×1
backbone.js ×1
css ×1
font-face ×1
indexing ×1
java ×1
javascript ×1
linq ×1
lucene ×1
migration ×1
npgsql ×1
postgresql ×1
requirejs ×1
safari ×1