小编J4N*_*J4N的帖子

EntityFramework:在两个不同的上下文中检索具有条件的数据

我在两个不同的数据库(具有相同的上下文)之间导入数据.

所以我有两个不同的背景.目标是将上下文A的一些数据导入上下文B.

从不直接编辑上下文B中的数据,它们仅从上下文A导入.在上下文B中,我将复制从中导入它的ID.

现在我正在尝试检索列表中所有不在上下文B中或具有更新版本的数据.

我在两个表中有一个ModifiedAt"字段,让我知道该字段是否已被修改.

这是我目前的代码:

//Here I get all my current data in the context B with their modification time
Dictionary<int,DateTime> currentItems = contextB.Dossiers.ToDictionary(d=>d.MatchingReferenceId, d=>d.ModifiedAt);

//And here the pain starts:
contextA.Dossiers.Where(da=> !currentItems.Keys.Contains(da.Id) || currentItems.FirstOrDefault(db=>db.Key == da.Id).Value <da.ModifiedAt)//And I'm looping on it with a foreach.
Run Code Online (Sandbox Code Playgroud)

第一部分(我检查上下文B是否包含元素)工作,第二部分,我得到了这个例外:

Unable to process the type 'System.Collections.Generic.KeyValuePair`2[]', because it has no known mapping to the value layer.
Run Code Online (Sandbox Code Playgroud)

但我不能做更简单的Id和修改时间之间的这个链接(在开始时,我从其他上下文有一个POCO类,我也试过匿名类型,相同的结果)

我错过了什么?

编辑1

我也用完全相同的结果尝试了这个:contextA.Dossiers.Where(da =>!currentItems.Keys.Contains(da.Id)|| currentItems.Any(db => db.Key == da.Id && db.值

编辑2

我试过lambda,但在这里它不喜欢同时使用两个上下文:

var myList = (from …
Run Code Online (Sandbox Code Playgroud)

sql linq datacontext entity-framework cross-database

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

IDataErrorInfo:如何知道所有属性是否有效?

我有一个WPFapplication(.Net 3.5),它使用IDataErrorInfoViewModel来验证输入.

它运行良好,用户控制获得正确的UI反馈.

问题是用户仍然可以更改所选元素,或保存此元素.

所以我的问题是:我怎么知道我的所有财产都有效?或者至少我所有显示的值都是有效的.目标是IsActive在这个结果上绑定一些

validation wpf idataerrorinfo

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

如何避免在Protobuf上的WCF中有重复的对象

我有一个小单元测试来测试循环依赖.

我的目标如下:

[ProtoContract]
public class Node
{
    [ProtoMember(1)]
    public String Name { get; set; }

    [ProtoMember(2,AsReference = true)]
    public List<Node> Childs { get; set; }

    public Node()
    {
        Childs = new List<Node>();
    }
}
Run Code Online (Sandbox Code Playgroud)

以下服务:

[ServiceContract]
public interface INodeService : IService
{
    [OperationContract]
    Task<Node> GetCyclicNodes();
}

public class NodeService : Service, INodeService
{
    public async Task<int> Add(int a, int b)
    {
        return a + b;
    }

    public async Task<Node> GetCyclicNodes()
    {
        Node nodeA = new Node() {Name = "Node A"}; …
Run Code Online (Sandbox Code Playgroud)

wcf protocol-buffers protobuf-net

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

报告服务:加入数据集上的所有字段

在报告中,我有一个带过滤器的数据集(基于MultiValue参数).

此数据集包含两个字段:Id和Name.

我需要在某处显示所有名称的串联:

Name1 / Name2 / Name3
Run Code Online (Sandbox Code Playgroud)

问题是该join方法仅适用于数组,然后我不能将数据集指定为值.

我也查看了自定义代码,但我没有找到任何工作.

我该怎么做?

reporting report reporting-services ssrs-2008

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

UDP:从所有网络接口读取数据

我有以下代码来读取来自网络的多播消息,用于指定的IP +端口

private static void ReceiveMessages(int port, string ip, CancellationToken token)
{
    Task.Factory.StartNew(() =>
        {
            using (var mUdpClientReceiver = new UdpClient())
            {
                var mReceivingEndPoint = new IPEndPoint(IPAddress.Any, port);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.Bind(mReceivingEndPoint);
                mUdpClientReceiver.JoinMulticastGroup(IPAddress.Parse(ip), 255);

                while (!token.IsCancellationRequested)
                {
                    byte[] receive = mUdpClientReceiver.Receive(ref mReceivingEndPoint);

                    Console.WriteLine("Message received from {0} ",mReceivingEndPoint);
                }
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

我有两个网络适配器,我从这个多播ip +端口发送数据(由两个wireshark实例监控每个网络适配器确认).对于两个网卡,我在wireshark上看到很多流量来自那些端口+ IP).

问题是在我的控制台上,我只看到来自一个网卡的消息.

我用netstat双重检查,我的端口上没有任何其他软件监听: 在此输入图像描述

那么为什么我只从我的两张网卡中获取流量呢?

编辑:

我甚至尝试了以下方法:

private static void ReceiveMessages(int port, string ip, CancellationToken token, IEnumerable<IPAddress> ipAddresses)
{
    foreach (IPAddress …
Run Code Online (Sandbox Code Playgroud)

c# sockets udp network-programming udpclient

6
推荐指数
2
解决办法
9898
查看次数

获取图表/表格的下一个颜色?

我有一些桌子/图表.我为他们添加了系列.每个系列都用颜色标识.

我正在寻找如何为我添加到我的系列中的系列选择最佳颜色.

根据已经使用的颜色,目标是获得下一个最佳颜色.由于我可以添加/删除系列,我不能只有一个颜色数组并在列表中选择下一个颜色.

我听说有一些MS指南(只发现这相当于excel)

任何想法/链接/方法来做到这一点?

编辑:发现提供了有关颜色对比的有趣信息

编辑2:我尝试使用"颜色色调轮":我只将轮子除以我需要的颜色数量,然后在位置开始处采用颜色.如果我们想要以不同的颜色开始,我还提供了一种放置偏移的方法.

它有效,我有不同的颜色,但我的印象是我们可以做得更好.例如210°的偏移,6种颜色,我是那些颜色: 在此输入图像描述 我认为这只是一种视错觉,但最后两种颜色似乎比其他颜色更接近.问题是我要处理用户的眼睛.

整个"Hue"看起来像这样在此输入图像描述 通过眼睛,我们可以看到有些颜色看起来比其他颜色更像(如青色).对我来说绿色似乎比黄色更大,......

似乎它存在一种颜色是感知线性颜色的概念,你知道是否有一种算法允许我得到一个感知线性颜色数组?然后很容易采取我需要的颜色

.net c# winforms

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

将CurrentCulture设置为Task creator CurrentCulture执行任务

我有一个使用Tasks的应用程序.我们还修改了cultureInfo(我们使用EN-US语言,但保留日期/数字格式),我们使用.Net 4.0.

应用程序有很多线程和任务,我们有一个工厂来创建任务/线程.

对于该线程,我们有以下代码,以确保使用正确的CurrentCulture启动每个线程:

//This is basically only the constructor, but it describe well how we create the Thread:
public MonitoredThread(ThreadStart threadStart, string name, bool isBackground = false)
{
    m_threadStart = threadStart;
    m_name = name;
    m_isBackground = isBackground;
    Thread = new Thread(ThreadWorker)
    {
        Name = name,
        IsBackground = isBackground,
        CurrentCulture = CustomCultureInfo.CurrentCulture,
        CurrentUICulture = CustomCultureInfo.CurrentCulture
    };
}
Run Code Online (Sandbox Code Playgroud)

但是对于Tasks,我不知道如何实现这种机制:

public static Task ExecuteTask(Action action, string name)
{
    MonitoredTask task = new MonitoredTask(action, name);
    return Task.Factory.StartNew(task.TaskWorker);
}
Run Code Online (Sandbox Code Playgroud)

任何的想法?

.net c# multithreading cultureinfo task-parallel-library

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

ConcurrentQueue允许我等待一个生产者

我有生产者/消费者的问题.目前我有一个简单的Queue包围着lock.

我试图用更高效的东西取代它.

我的第一选择是使用a ConcurrentQueue,但我没有看到如何让我的消费者等待下一个生成的消息(不做Thread.Sleep).

此外,如果大小达到特定数量,我希望能够清除整个队列.

您能否建议一些符合我要求的现有课程或实施?

.net c# concurrency multithreading

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

如何“减少”Jenkins Pipeline 输出路径

直到最近,我们才在 Jenkins 中构建没有任何“管道”的解决方案,所以我目前正在将我们的构建移动到多分支管道。

我遇到的问题是我们的解决方案有很多结构(很多子文件夹,有时还有一些大牌)。

目前,詹金斯管道提取文件夹中的所有内容,如下所示:

D:\ws\ght-build_feature_pipelines-TMQ33LB5OQIQ5VXVMFKFDG2HWCD4MUOGEGUWJUOMZ5D2GI42BIQA

这是很长的,现在我们达到了 260 个字符的限制MSBuild

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2991,5):错误 MSB3553:资源文件“obj\Release\xx.aaaaaaaaaa。 yyy.bbbbbb.dddddddddddddd.yyyyyyy.vvv.dddddddddd.Resources.resources”的名称无效。项目元数据“%(FullPath)”不能应用于路径“obj\Release\xx.aaaaaaaaaa.yyy.bbbbbb.dddddddddddddd.yyyyyyy.vvv.dddddddddd.Resources.resources”。指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。[D:\ws\ght-build_feature_pipelines-TMQ33LB5OQIQ5VXVMFKFDG2HWCD4MUOGEGUWJUOMZ5D2GI42BIQA\Src\bbbbbb\dddddd\dddddddddddddd\yyyyyyy\xx.adaddadddddbbbb.ydyddddddbbbb.

我们有太多长度很大的情况,以至于重构所有内容确实是一项艰巨的工作,所以我正在研究如何为 jenkins 指定一条更小的路径?

jenkins jenkins-pipeline

6
推荐指数
2
解决办法
2604
查看次数

如何使用 Nunit 运行程序查找“卸载应用程序域时遇到异常”的来源?

我们在不同的程序集中进行了大量测试(6000+)。我们使用 Nunit 测试适配器在本地 Azure 代理上运行它们。

这花了很长时间,所以我们激活了 runInParallel。

yaml 步骤现在如下:

  - task: VSTest@2
    timeoutInMinutes: 300
    inputs:
      testSelector: 'testAssemblies'
      testAssemblyVer2: '*.Test*.dll'
      searchFolder: '$(System.DefaultWorkingDirectory)/$(buildConfiguration)'
      codeCoverageEnabled: false
      platform: 'Any CPU'
      uiTests: false
      configuration: '$(buildConfiguration)'
      rerunFailedTests: false
      pathtoCustomTestAdapters: 'Solution/packages/NUnit3TestAdapter.3.12.0/build/net35'
      minimumExpectedTests: 1000
      runInParallel: true
      distributionBatchType: basedOnAssembly
      failOnMinTestsNotRun: true
      resultsFolder: 'testResults'
      runSettingsFile: '$(Build.SourcesDirectory)\azure-tests.runsettings'
    #continueOnError: true
Run Code Online (Sandbox Code Playgroud)

现在,我们得到了一些未通过的测试。我分析了其中一个,基本上,它失败了,因为在某些时候,它执行了OfType<SomeInterface>. 集合中的对象确实实现了这个接口,所以我想我一定有这个程序集加载两次的问题,并且这个接口不被认为与创建的对象相同。

当我检查日志时,我现在看到了这一点,这似乎证实了这个理论:

##[warning]RunMessage : Exception NUnit.Engine.NUnitEngineUnloadException,    Exception thrown unloading tests from C:\DevOp\2\s\debug\Acceptance.Tests.dll
##[warning]RunMessage : Exception encountered unloading application domain
##[warning]RunMessage :    at NUnit.Engine.Services.DomainManager.DomainUnloader.Unload()
   at NUnit.Engine.Runners.TestDomainRunner.UnloadPackage()
   at NUnit.Engine.Runners.AbstractTestRunner.Dispose(Boolean disposing)
   at …
Run Code Online (Sandbox Code Playgroud)

c# nunit nunit-3.0

6
推荐指数
0
解决办法
1396
查看次数