我正在尝试使用WPF组合框(在WPFToolkit Datagrid中),并且我无法正确对齐所有部分.我正在使用Linq to Entities,我将整个datacontext设置为Linq查询的结果:
private void LoadDonationGrid()
{
donationGrid.ItemsSource = from donations in entities.Donation
.Include("Family")
.Include("PledgeYear")
.Include("DonationPurpose")
from donationPurposes in entities.DonationPurpose
select new { donations, donationPurposes };
}
Run Code Online (Sandbox Code Playgroud)
我的代码隐藏中也有一个页面属性,它为组合框提供了ItemsSource:
private IEnumerable donationPurposeList;
public IEnumerable DonationPurposeList
{
get
{
if (donationPurposeList == null)
{
donationPurposeList = from dp in entities.DonationPurpose
select dp;
}
return donationPurposeList.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
组合框的XAML如下所示:
<tk:DataGridTemplateColumn Header="Purpose">
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=donations.DonationPurpose.Description, Mode=TwoWay}" />
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
<tk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="cboDonationPurpose"
SelectedValue="{Binding Path=donations.DonationPurposeID, Mode=TwoWay}"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type Page},Mode=FindAncestor},Path=DonationPurposeList}"
DisplayMemberPath="Description" …Run Code Online (Sandbox Code Playgroud) 我正在使用SignalR将复杂的对象图返回给我的JavaScript客户端.这个对象图对同一个对象有多个引用,因此SignalR/Json.NET返回的JSON看起来很像这样:
{
"$id": "57",
"Name": "_default",
"User": {
"$id": "58",
"UserTag": "ken",
"Sessions": [{
"$id": "59",
"SessionId": "0ca7474e-273c-4eb2-a0c1-1eba2f1a711c",
"User": {
"$ref": "58"
},
"Room": {
"$ref": "57"
}
}],
},
"Sessions": [{
"$ref": "59"
}]
}
Run Code Online (Sandbox Code Playgroud)
(当然,在现实生活中要复杂得多,但你明白了.)
当然,当Json.NET通过引用而不是按值进行序列化时,它会为每个对象分配一个$ id值(例如,"$id":"57"然后稍后只使用该id引用该对象(例如,"$ref":"57".).告诉我,当Json.NET(使用C#/ .NET)反序列化这些引用时,它会将对象的适当实例放在适当的位置.
到目前为止一切都很好 - 但是在JavaScript中对这些进行反序列化的最佳方法是什么,以便我在适当的位置获得适当的对象实例,而不仅仅是奇怪的$ ref字段?
我可能会编写自己的通用解串器,但我必须想象其他人已经解决了这个问题,而且我很快就不会重新发明任何轮子.不幸的是,我的Google技能显然不足以找到解决方案:-).
编辑:
我看到有一个IETF草案提案,关于这类事情应该如何运作.看起来总是有用的道格拉斯克罗克福德有一个暂时的实施.不幸的是,IETF提议使用了与Json.NET使用不同的模式.
我有一个deploy.cmd用于部署Azure网站的自定义文件.在构建和部署网站本身之前,它会执行一些自定义操作,例如安装Typesjs版本的Typescript和minifier,然后运行单元测试.
我遇到的问题是,运行此脚本似乎需要花费越来越长的时间,至少在Azure上运行.在我的开发笔记本电脑上,运行deploy.cmd脚本大约需要90秒.但是当我在Azure上推出它时,运行时需要15-20分钟(有时甚至超过30-40分钟).我并不感到惊讶,它的花费更长的时间了Web服务器上-我感到有点惊讶,它的时间要长10倍以上.
这是最近部署的日志文件的精简版本:
Command: deploy.cmd
18:54:16.89 - Starting deploy script
18:54:19.92 - Installing typescript
18:54:30.90 - Installing minifier
18:54:44.62 - Restoring Nuget Packages
18:55:48.25 - Building solution
18:59:09.12 - Building test projects
19:04:03.67 - Running Payboard.Common.Tests.dll
19:04:19.80 - Running Payboard.Model.Tests.dll
19:04:25.25 - Running Payboard.Services.Tests.dll
19:06:29.72 - Running Payboard.Integrations.Tests.dll
19:06:49.46 - Running Payboard.Web.Tests.dll
19:07:56.99 - Beginning KuduSync
19:08:03.16 - Finished successfully.
Run Code Online (Sandbox Code Playgroud)
显然,这是大多数时间占用的两个构建步骤.我想我可以将它们合并到一个单独的构建步骤中 - 虽然我不完全确定它如何与KuduSync一起使用.
关于如何提高速度的任何其他建议?或者这基本上只是预期?
我有一个相当大的ASP.NET MVC/WebApi Web应用程序(~100KLOCS),它在负载下吱吱作响(约1MM请求/天).例如,页面通常需要2-3秒才能加载,这与最佳效果相差无几.当我开始四处寻找可能的瓶颈时,我不禁注意到,我的IOC容器Ninject被评为最慢的一个非常健康的边缘:
http://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison https://github.com/ninject/ninject/issues/84
有没有其他人一直在这个位置,并尝试将Ninject替换为其他东西,例如,LightInject,SimpleInject或类似的东西?值得努力吗?Ninject似乎是最受欢迎的,有很多社区和框架支持,而且我并不急于让自己陷入一个最终不受支持的项目中.除此之外,我不确定如何测试,在现实世界的应用程序中,IOC容器的性能是否会被注意到.
那里的任何人都有值得分享的真实故事或疤痕吗?或者有关如何判断Ninject是否是瓶颈的建议?
我正在尝试匹配看起来像这样的字符串:
http://www.google.com
Run Code Online (Sandbox Code Playgroud)
但是如果它发生在更大的上下文中,就像这样:
<a href="http://www.google.com"> http://www.google.com </a>
Run Code Online (Sandbox Code Playgroud)
我得到的正则表达式在我测试过的几个不同的RegEx引擎(PHP,ActionScript)中的工作如下所示:
(?<!["'>]\b*)((https?://)([A-Za-z0-9_=%&@?./-]+))\b
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到它:http: //regexr.com?36g0e
问题是特定的RegEx似乎在.NET下无法正常工作.
private static readonly Regex fixHttp = new Regex(@"(?<![""'>]\b*)((https?://)([A-Za-z0-9_=%&@?./-]+))\b", RegexOptions.IgnoreCase);
private static readonly Regex fixWww = new Regex(@"(?<=[\s])\b((www\.)([A-Za-z0-9_=%&@?./-]+))\b", RegexOptions.IgnoreCase);
public static string FixUrls(this string s)
{
s = fixHttp.Replace(s, "<a href=\"$1\">$1</a>");
s = fixWww.Replace(s, "<a href=\"http://$1\">$1</a>");
return s;
}
Run Code Online (Sandbox Code Playgroud)
具体来说,.NET似乎没有关注第一个\b*.换句话说,它正确无法匹配此字符串:
<a href="http://www.google.com">http://www.google.com</a>
Run Code Online (Sandbox Code Playgroud)
但它错误地匹配此字符串(请注意额外的空格):
<a href="http://www.google.com"> http://www.google.com </a>
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么或如何解决它的任何想法?
我正在尝试用SignalR组建一个简单的"Hello World"样式应用程序.稍微复杂的因素是SignalR集线器需要自托管,而不是IIS/ASP.NET.据我所知,我已经让服务器端正常工作,并且它可以在端口8080上使用,但我在连接客户端时遇到了麻烦.我目前遇到的问题是SignalR客户端似乎忽略了我指定的URL上的端口.
具体来说,我在这里有这个代码:
<head runat="server">
<script type="text/javascript" src="/Scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/Scripts/json2.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.signalR-0.5.3.js"></script>
<script type="text/javascript" src="http://<%=Request.Url.Host %>:8080/signalr/hubs"></script>
<title>SignalR Test</title>
</head>
<body>
<script type="text/javascript">
$(function () {
// Wire up the client to the SignalR server on the same host
// as the source of this page, but on port 8080.
$.connection.url = "http://<%=Request.Url.Host %>:8080/signalr";
var roomHub = $.connection.roomHub;
$('#echoButton').click(function () {
roomHub.echo($('#echoButton').val())
.error(function (err) {
alert(err);
});
});
$.connection.hub.start({ transport: 'auto', xdomain: true })
.done(function () {
console.log('Connected.');
}) …Run Code Online (Sandbox Code Playgroud) 我有一个超出SQL Azure的应用程序 - 无论如何我都愿意付出代价 - 而且我对调查Azure DocumentDB感兴趣.预览显然具有明显的可扩展性限制(如描述这里,例如),但我想我大概可以摆脱那些预览期间,只要我在正确的使用它.
所以这就是我的问题.如何设计我的应用程序以利用Azure DocumentDB的内置可伸缩性?举例来说,我知道,与Azure Table中存储-这便宜,但可怕的非常有限的选择-你需要结构两步层次中的所有数据:PartitionKey和RowKey.如果你这样做(在现实世界的应用程序中几乎不可能),ATS(据我所知)在幕后移动分区,从机器到机器,这样你就可以获得接近无限的可扩展性.太棒了,你永远不必考虑它.
使用SQL Server进行扩展显然要复杂得多 - 您需要设计自己的分片系统,处理找出所讨论的分片所在的服务器,等等.可能,并且做得非常可扩展,但复杂而痛苦.
那么可扩展性如何与DocumentDB一起使用?它承诺任意可扩展性,但存储引擎如何在幕后工作?我看到它有"数据库",每个数据库都可以有一些"集合",依此类推.但是它的任意可伸缩性如何映射到这些其他概念?如果我有一个包含数亿行的SQL表,如果我将所有这些数据放入一个集合中,我是否会获得所需的可扩展性?或者我是否需要手动将其分布在多个集合中,以某种方式进行分片?或者跨多个DB?或者DocumentDB是否足够聪明,能够以多种方式从多台计算机中合并查询,而不必考虑任何问题?要么...?
我一直在环顾四周,还没有找到任何关于如何处理此问题的指导.对其他人找到的或MS建议的内容非常感兴趣.
我似乎无法在我拥有的几个F#项目上安装Entity Framework 6.0.1.这是我收到的错误消息:
执行脚本文件'C:\ source\payboard\PayboardWeb\packages\EntityFramework.6.0.1\tools\install.ps1'.使用"2"参数调用"SetData"的异常:"在程序集中键入'Microsoft.VisualStudio.FSharp.ProjectSystem.Automation.OAProject''FSharp.ProjectSystem.Base,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'未标记为可序列化." 在C:\ source\payboard\PayboardWeb\packages\EntityFramework.6.0.1\tools\EntityFramework.psm1:633 char:5 + $ domain.SetData('project',$ Project)+ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:SerializationException
System.NullReferenceException:未将对象引用设置为对象的实例.System.Data.Entity.Mitrations.MigrationsDomainCommand.Execute(Action命令)中的System.Data.Entity.ConnectionFactoryConfig.InitializeEntityFrameworkCommand.Execute()
在EF6论坛(https://entityframework.codeplex.com/workitem/891)上似乎有一个开放的bug ,但据我所知,它没有得到任何爱.
EF6在非F#项目上安装得很好.
任何建议的解决方法?
我们正在使用Nightwatch自动执行一些UI测试.一些当前的测试相当脆弱,主要与奇怪的CSS选择器有关,我正在尝试简化它们.但是,我期望工作的一些简单的CSS选择器是,不是.
我正试图找到这个深层嵌套的<a>标签:
<a class="btn btn-quote btn-crm" href="/crm/" id="btnEndSession" style="display: inline-block;">End Session</a>
Run Code Online (Sandbox Code Playgroud)
这里有一些代码正在运行:
.waitForElementVisible('#quoteSummary > div > div > div > div > a:nth-child(2)', 1000)
.click('#quoteSummary > div > div > div > div > a:nth-child(2)')
Run Code Online (Sandbox Code Playgroud)
但这是一个令人讨厌的CSS选择器,我想用它替换它:
.waitForElementVisible('#btnEndSession', 1000)
.click('#btnEndSession')
Run Code Online (Sandbox Code Playgroud)
因为<a>我感兴趣的元素实际上具有id btnEndSession,所以看起来应该有效.但事实并非如此:夜间监视错误,其中一个"等待元素<#btnEndSession>在10000毫秒内可见"消息.
我也尝试过:
.waitForElementVisible('.btn-crm', 10000)
.waitForElementVisible('a[id=btnEndSession]', 10000)
.waitForElementVisible('a#btnEndSession', 10000)
Run Code Online (Sandbox Code Playgroud)
但那些也不起作用.知道为什么这些更简单的选择器没有选择元素吗?
编辑:
好吧,奇怪的是,这有效:
.waitForElementVisible('a.btn-crm', 1000)
Run Code Online (Sandbox Code Playgroud)
但是,在同一个测试中,寻找这个元素:
<select class="custom-form-control crm-result-visit select-hidden" id="crm-result-visit" name="crmResultVisit">
<option value=" ">Select</option>
<option value="Not Home">Not Home</option>
</select>
Run Code Online (Sandbox Code Playgroud)
所有这些不同的选择器都找不到元素:
.waitForElementVisible('select.crm-result-visit', 10000)
.waitForElementVisible('select#crm-result-visit', 10000)
.waitForElementVisible('#crm-result-visit', 10000) …Run Code Online (Sandbox Code Playgroud) 我们已经git-lfs成功使用了几年。但是,我们会定期添加包含在git-lfs. 我们转移到的最新文件类型之一git-lfs是我们的所有*.csv文件。
问题是我们*.csv的历史记录中有几个非常大的文件在初始迁移中没有被捕获,我也需要将这些文件移动到。git-lfs(我们正在从 BitBucket 迁移到 GitHub,GitHub 对允许的最大文件大小有更严格的规则,因此我需要确保所有旧的大文件也都打开git-lfs。)
最明显的方法是这样的:
git lfs migrate import --everything --include="*.csv"
当我运行该命令时,它似乎成功了。它重写历史,输出看起来像这样:
PS E:\source\swyfft_web_ken> git lfs migrate import --everything --include="*.csv"
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (131623/131623), done.
development 1b042eeebfb346af8f7e90d1f6c7b6abfc64d014 -> 1b042eeebfb346af8f7e90d1f6c7
b6abfc64d014
feature/ks/20200205_ImsWebServicesV2 e2b5b267d5215ef48d5ef4e3f0924613c6076cd7 -> e2b5b267d5215ef48d5ef4e3f092
4613c6076cd7
master 2029338210697c795a536faa9dd4c141c6edd6c2 -> 2029338210697c795a536faa9dd4
c141c6edd6c2
1.0 752143ee1b87020e9b285886b3986703d6c74a38 -> 752143ee1b87020e9b285886b398
6703d6c74a38
1.1 5fefda3de45651107218a953e789ea5121002756 -> 5fefda3de45651107218a953e789
ea5121002756
1.2 30f87f08e672d10de0029985ad5acc1bf5a82457 -> 30f87f08e672d10de0029985ad5a
cc1bf5a82457 …Run Code Online (Sandbox Code Playgroud) javascript ×3
azure ×2
signalr ×2
.net ×1
c# ×1
combobox ×1
data-binding ×1
f# ×1
git ×1
git-lfs ×1
github ×1
html ×1
json ×1
json.net ×1
kudu ×1
ninject ×1
nuget ×1
performance ×1
regex ×1
signalr-hub ×1
wpf ×1
wpftoolkit ×1