小编Ken*_*ith的帖子

WPF ComboBox没有更新源代码

我正在尝试使用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)

data-binding wpf combobox wpftoolkit

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

使用JavaScript从SignalR/Json.NET反序列化复杂对象图中的引用

我正在使用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使用不同的模式.

javascript json json.net deserialization signalr

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

Azure网站上非常慢的Kudu部署

我有一个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一起使用.

关于如何提高速度的任何其他建议?或者这基本上只是预期?

azure azure-web-sites kudu

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

出于性能原因,是否值得更换Ninject?

我有一个相当大的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是否是瓶颈的建议?

performance ninject

13
推荐指数
2
解决办法
3517
查看次数

RegEx不适用于.NET,但适用于其他RegEx实现

我正在尝试匹配看起来像这样的字符串:

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)

关于我做错了什么或如何解决它的任何想法?

.net html c# regex

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

SignalR js客户端似乎忽略了url端口

我正在尝试用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)

javascript signalr signalr-hub

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

Azure DocumentDB如何扩展?我需要担心吗?

我有一个超出SQL Azure的应用程序 - 无论如何我都愿意付出代价 - 而且我对调查Azure DocumentDB感兴趣.预览显然具有明显的可扩展性限制(如描述这里,例如),但我想我大概可以摆脱那些预览期间,只要我在正确的使用它.

所以这就是我的问题.如何设计我的应用程序以利用Azure DocumentDB的内置可伸缩性?举例来说,我知道,与Azure Table中存储-这便宜,但可怕的非常有限的选择-你需要结构两步层次中的所有数据:PartitionKey和RowKey.如果你这样做(在现实世界的应用程序中几乎不可能),ATS(据我所知)在幕后移动分区,从机器到机器,这样你就可以获得接近无限的可扩展性.太棒了,你永远不必考虑它.

使用SQL Server进行扩展显然要复杂得多 - 您需要设计自己的分片系统,处理找出所讨论的分片所在的服务器,等等.可能,并且做得非常可扩展,但复杂而痛苦.

那么可扩展性如何与DocumentDB一起使用?它承诺任意可扩展性,但存储引擎如何在幕后工作?我看到它有"数据库",每个数据库都可以有一些"集合",依此类推.但是它的任意可伸缩性如何映射到这些其他概念?如果我有一个包含数亿行的SQL表,如果我将所有这些数据放入一个集合中,我是否会获得所需的可扩展性?或者我是否需要手动将其分布在多个集合中,以某种方式进行分片?或者跨多个DB?或者DocumentDB是否足够聪明,能够以多种方式从多台计算机中合并查询,而不必考虑任何问题?要么...?

我一直在环顾四周,还没有找到任何关于如何处理此问题的指导.对其他人找到的或MS建议的内容非常感兴趣.

azure azure-cosmosdb

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

从NuGet获取EF 6以在F#项目上安装

我似乎无法在我拥有的几个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#项目上安装得很好.

任何建议的解决方法?

f# entity-framework nuget visual-studio-2013

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

Nightwatch无法通过css id或类选择器定位元素

我们正在使用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)

javascript css-selectors nightwatch.js

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

git lfs migrate 似乎没有迁移文件

我们已经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)

git github git-lfs git-lfs-migrate

8
推荐指数
0
解决办法
2700
查看次数