我正在使用NerdDinner应用程序试图自学ASP.NET MVC.但是,我偶然发现全球化问题,我的服务器使用逗号作为小数分隔符显示浮点数,但虚拟地球地图需要点数,这会导致一些问题.
我已经在我的视图中解决了映射JavaScript的问题,但是如果我现在尝试发布带有点作为十进制分隔符的已编辑的晚餐条目,则控制器InvalidOperationException在更新模型时失败(抛出)(在UpdateModel()metod中).我觉得我必须在控制器的某个地方设置适当的文化,我尝试了OnActionExecuting()但是没有帮助.
我正在使用Migrator.NET为应用程序编写数据库迁移.Marc-AndréCournoyer写道:
与应用程序中的任何代码一样,您 必须测试迁移.起起伏伏的代码.将其作为持续构建过程的一部分,并在尽可能多的不同数据库和环境中进行测试.
我怎么做?假设我有创建表的Up()方法和丢弃同一个表的Down()方法,我正在使用SQL Server.测试怎么样?我应该对系统表运行SQL查询,例如select * from sys.columns,检查表是否已创建并且它是否具有正确的结构?如果我们使用NHibernate会怎么样?
编辑 我的意思是Rails ActiveRecord迁移意义上的迁移(基于C#代码以小步骤创建,修改和拆除数据库).
编辑2 而在这里的,我了解,我们应该测试迁移.博客帖子实际上是从Migrator的wiki链接的.
我在Windows上并尝试在同一台服务器上运行多个(当前是两个)TeamCity实例.我选择不安装Windows服务,而是通过runAll.bat start命令运行服务器.当我运行安装程序时,我为每个安装程序选择了不同的端口,名称和路径.第一台服务器成功启动,但第二台服务器没有启动 - 我看到tomcat窗口出现了,但是一段时间后它已经消失了,尽管构建代理窗口仍然存在.这是一些输出:
c:\Tools\TeamCity\bin>runAll.bat start
starting TeamCity server and agent...
Using CATALINA_BASE: "c:\Tools\TeamCity\bin\.."
Using CATALINA_HOME: "c:\Tools\TeamCity\bin\.."
Using CATALINA_TMPDIR: "c:\Tools\TeamCity\bin\..\temp"
Using JRE_HOME: "c:\Tools\TeamCity\bin\..\jre"
Using CLASSPATH: "c:\Tools\TeamCity\bin\..\bin\bootstrap.jar"
Starting TeamCity Build Agent Launcher...
Agent home directory is C:\Tools\TeamCity\buildAgent
Current JRE version is 1.6
c:\Tools\TeamCity\bin>cd c:\Tools\TeamCity2\bin
c:\Tools\TeamCity2\bin>runAll.bat start
starting TeamCity server and agent...
Using CATALINA_BASE: "c:\Tools\TeamCity2\bin\.."
Using CATALINA_HOME: "c:\Tools\TeamCity2\bin\.."
Using CATALINA_TMPDIR: "c:\Tools\TeamCity2\bin\..\temp"
Using JRE_HOME: "c:\Tools\TeamCity2\bin\..\jre"
Using CLASSPATH: "c:\Tools\TeamCity2\bin\..\bin\bootstrap.jar"
Starting TeamCity Build Agent Launcher...
Agent home directory is C:\Tools\TeamCity2\buildAgent
Current JRE version …Run Code Online (Sandbox Code Playgroud) 我在某处读到,ensureIndex()如果它不存在,调用实际上会创建一个集合.但索引总是在某些字段上,而不是全部,所以如果我确定索引{ name:1 }然后将文档添加到具有更多字段的集合中,索引将起作用吗?我知道我们没有架构,来自RDBMS世界我只是想确定.:)我想在我的网站启动时创建索引,但最初数据库是空的.在确保索引之前我不需要任何数据,这是正确的吗?
生成的整数是IFixture.Create<int>()唯一的吗?
维基说这些数字是随机的,但它也告诉我们这一点
第一个数字是在[1,255]范围内生成的,因为这是一组对所有数值数据类型有效的值..NET中最小的数字数据类型是System.Byte,它适合此范围.
当使用前255个整数时,随后从范围[256,32767]中选择数字,这对应于System.Int16可用的剩余正数.
GitHub上的两件相关事情:
https://github.com/AutoFixture/AutoFixture/issues/2
https://github.com/AutoFixture/AutoFixture/pull/7
那些单元测试怎么样?
https://github.com/AutoFixture/AutoFixture/blob/master/Src/AutoFixtureUnitTest/GeneratorTest.cs#L33
[Theory, ClassData(typeof(CountTestCases))]
public void StronglyTypedEnumerationYieldsUniqueValues(int count)
{
// Fixture setup
var sut = new Generator<T>(new Fixture());
// Exercise system
var actual = sut.Take(count);
// Verify outcome
Assert.Equal(count, actual.Distinct().Count());
// Teardown
}
Run Code Online (Sandbox Code Playgroud)
https://github.com/AutoFixture/AutoFixture/blob/master/Src/AutoFixtureUnitTest/GeneratorTest.cs#L57
[Theory, ClassData(typeof(CountTestCases))]
public void WeaklyTypedEnumerationYieldsUniqueValues(int count)
{
// Fixture setup
IEnumerable sut = new Generator<T>(new Fixture());
// Exercise system
var actual = sut.OfType<T>().Take(count);
// Verify outcome
Assert.Equal(count, actual.Distinct().Count());
// Teardown
}
Run Code Online (Sandbox Code Playgroud)
我还没有找到一个声明,说明生成的数字是唯一的,只有那些可能暗示它的信息,但我可能错了.
考虑一个非常简单的模型,我们有位置,每个位置可以有零个或多个事件.位置将具有名称,描述和地理点数据(lon/lat)等属性.事件应附加到一个位置(其父级),并且应具有名称和描述.
{
"location" : {
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" },
"geo": { "type": "geo_point" },
"exhibits": {
"type": "nested",
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是查询对其名称和描述执行全文搜索的子文档(事件).我希望得到匹配的事件,并能够获得他们的父位置的名称.我还想按位置坐标缩小结果集.我不想获得任何与查询不匹配的事件.在弹性搜索中有可能吗?我应该使用哪些类型的查询?
我已经尝试将事件作为一个数组属性放在位置(见上文)并使用nested查询,但它不返回我想要的那种结果(我认为它返回整个位置,包括所有事件,甚至是那些不匹配的事件我的查询).我已经尝试将事件放入一个单独的索引(映射?),提供_parent属性,然后top_children对位置执行查询,但我没有得到任何结果.
{
"exhibit": {
"_parent": { "type": "locations" },
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" }, …Run Code Online (Sandbox Code Playgroud) 我认为这是一个常见的场景 - 我有一个视图,我使用HtmlHelper生成一些HTML元素,我还有一个帮助扩展,让我获得生成的元素的ID,以便我可以在JavaScript中使用它(例如,jQuery) :
$('#@Html.FieldIdFor(model => model.Name)').autocomplete({
Run Code Online (Sandbox Code Playgroud)
或者在做Ajax时我正在从UrlHelper构建URL字符串,再次使用服务器端代码在页面上放置一些客户端内容:
$.get('@Url.Action("States", "Location")', { country: $(this).val() }, function (json) {
Run Code Online (Sandbox Code Playgroud)
那部分很容易.我知道如何做到这一点,我知道我可以将此代码部分放在部分视图中,并在部分视图中显示我希望代码显示的位置.这不是我想问的问题.
页面标记中包含的代码不会被缓存,这是一回事.另一件事是,有时我需要在几个视图上使用相同的代码,我想将它保存在一个地方进行维护.单个地方可能是部分视图 - 但我想要缓存此代码,理想情况下它将落在.js文件中.但是我们不能在.js文件中使用服务器端代码.关键字是缓存和单个文件.
我也知道我可以有一个JSController来提供JavaScript,例如:
<script src="@Url.Action("Script", "JS", { script = "location" })
type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
此控制器操作可以作为视图呈现的结果返回JavaScript.
或者也许我应该停止偏执,只使用普通的.js文件并将元素ID和URL放在那里,如果我更新我的视图模型或视图,我会去更新.js文件.我想知道这是否是.NET的过度工程问题 - 我有兴趣知道人们如何在Rails或django中做到这一点.
所以我真正想要的是一些"最佳实践"策略.你最常做什么?你如何解决这个问题?
我有一个非常简单的映射,看起来像这样(我简化了示例):
{
"location" : {
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我使用一些基于真实英语单词的随机值来索引很多位置.
我希望能够在名称或描述字段中搜索与任何给定关键字匹配的位置(名称更重要,因此我给予了提升).我尝试了几个不同的查询,但没有返回任何结果.
{
"fields" : ["name", "description"],
"query" : {
"terms" : {
"name" : ["savage"],
"description" : ["savage"]
},
"from" : 0,
"size" : 500
}
}
Run Code Online (Sandbox Code Playgroud)
考虑到存在具有单词位置猛烈抨击它应该给我一些结果(说明野蛮是干猛烈抨击).使用上述查询得到0结果.我一直在使用curl来查询ES:
curl -XGET -d @query.json http://localhost:9200/myindex/locations/_search
Run Code Online (Sandbox Code Playgroud)
如果我改为使用查询字符串:
curl -XGET http://localhost:9200/fieldtripfinder/locations/_search?q=description:savage
Run Code Online (Sandbox Code Playgroud)
我实际上得到了一个结果(当然现在只搜索描述字段).
基本上我正在寻找一个查询,它将使用多个关键字进行OR类搜索,并将它们与名称和描述字段中的值进行比较.
我有一个WCF服务,其方法看起来像这样(使用调试器返回null进行测试,我只关心现在获取数据):
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "fares", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public List<Fare> GetFares(Dictionary<int, int> itineraries, decimal? threshold, bool includeInternational)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Fiddler向该方法发出请求,但无法理解正确的Request Body应该是什么.如果效果更好,我可以将Dictionary参数更改为其他参数.
在请求标题我通过:
User-Agent:Fiddler
Content-Type:application/json; 字符集= utf-8的
我该怎么把身体放进去?
我正在使用NerdDinner示例应用程序并到达处理Virtual Earth地图的部分.应用程序存储经度和纬度的一些值.不幸的是,在我的系统上,浮点数用逗号作为小数分隔符存储,而不是像美国那样的点.因此,如果我的纬度为47.64,则将其检索并显示为47,64.因为该值在函数调用中传递给Virtual Earth API,所以它在那时失败(例如JavaScript API期望47.64,-122.13,但得到47,64,-122,13).
我需要确保应用程序始终使用点.在WebForms应用程序中,我将有一个覆盖该System.Web.UI.Page.InitializeCulture()方法的公共类,我将从该类继承我的页面.
我不确定如何对MVC做同样的事情.我需要定制ViewPage或什么?有没有简单的方法来解决这个问题?例子?
asp.net-mvc ×3
autofixture ×1
c# ×1
fiddler ×1
indexing ×1
javascript ×1
json ×1
migration ×1
mongodb ×1
request ×1
sql-server ×1
teamcity ×1
tomcat ×1
unit-testing ×1
wcf ×1