小编Tri*_*ran的帖子

自跟踪实体 - AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突

我已经被这个问题困住了一个多星期了.希望有人能指出我正确的方向.

我首先简要介绍一下我的架构.

资产1 ---> 1地址* - > 1区* - > 1区* - > 1国家

套餐1 - >*资产

使用自我跟踪实体(STE)+ WCF.

脚步:

  1. 调用数据存储以获取资产列表.
  2. 调用数据存储以获取包列表.
  3. 用户选择一个包并为其分配一些资产.
  4. 保存包裹.

在步骤2中,呼叫使用预先加载的地址.

from p in context.Assets.Include("Address.Area.Region.Country")
Run Code Online (Sandbox Code Playgroud)

这是尝试呼叫时的错误

context.Packages.ApplyChanges(package)
Run Code Online (Sandbox Code Playgroud)

AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突.在调用AcceptChanges之前,请确保键值是唯一的.

编辑

在窥探之后,我发现这是一个STE问题.问题是您无法持久存储包含此处概述的同一实体的多个实例的图形.这是我的问题.

如何将实体添加到我的实体集合中.新实体可能具有包含与集合中已有密钥相同的密钥的相关实体.即添加可能包含相同地址,区域,地区或国家/地区实体的新资产.

这是我的约束:

  1. 我必须使用导航集合,因为它会影响UI.
  2. 我无法预先获取将涉及的所有实体,因为数据集太大了.
  3. 我必须能够随时拍摄实体的快照以保留历史记录并使用它来"撤消"任何更改.

我知道Diego B Vega建议的可能解决方案,但这些不是我可以用于我的解决方案的选项.有没有人有任何其他想法?

wcf entity-framework self-tracking-entities objectcontext

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

WPF - 宽度和高度必须是非负的

我的应用程序遇到了一个奇怪的异常.它一直运行良好,直到我升级我的开发机器(相同的OS + VS2010)并尝试再次调试软件.这是我得到的例外:

宽度和高度必须是非负的.

堆栈跟踪在这里:

 at System.Windows.Size..ctor(Double width, Double height)
   at System.Windows.Window.SourceWindowHelper.GetHwndNonClientAreaSizeInMeasureUnits()
   at System.Windows.Window.GetHwndNonClientAreaSizeInMeasureUnits()
   at System.Windows.Window.MeasureOverrideHelper(Size constraint)
   at System.Windows.Window.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at System.Threading.ExecutionContext.runTryCode(Object userData)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object …
Run Code Online (Sandbox Code Playgroud)

wpf

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

PRISM WPF - 导航每次都会创建新视图

我在WPF中使用带有Unity的PRISM 4 Navigation API.我有一个树视图,它启动一个RequestNavigate传递所选树节点的ID(GUID).

_regionManager.RequestNavigate(RegionNames.DetailRegion,
    ViewNames.SiteView + "?ID=" + site.ID);
Run Code Online (Sandbox Code Playgroud)

在我的模块中,我已经注册了view/view-model,如下所示:

_container.RegisterType<SiteDetailsViewModel>();
_container.RegisterType<object, SiteDetailsView>(ViewNames.SiteView);
Run Code Online (Sandbox Code Playgroud)

当我从树视图中选择不同的节点时,DetailsRegion会按预期显示SiteDetailsView,但是当我想导航回同一节点时,会创建一个新的视图/视图模型.

我试图打破,IsNavigationTarget(NavigationContext navigationContext)但这种方法似乎永远不会被调用.

我哪里出错了?提前致谢.

navigation wpf prism unity-container

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

API密钥的AWS API Gateway使用情况

如何通过API密钥从AWS API Gateway获取使用率指标,例如使用计数器,使用日志等?

我目前正在发送x-api-key到我的集成端点进行手动记录.我不想这样做,让AWS API Gateway为我测量和报告这个指标.

aws-api-gateway

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

WCF灾难性失败

我的手上有一个真正的柠檬.我希望有同样问题或知道如何解决问题的人可以指出我正确的方向.

安装程序

我正在尝试创建一个使用ADO实体框架模型从数据库中检索数据的WCF数据服务.我添加了WCF服务参考,一切似乎都很好.我有两组数据服务调用.第一个检索所有"用户"的列表并返回(此列表不包括任何相关数据(例如地址,联系人等).第二个调用是选择"用户"时,应用程序请求包括给定用户ID的一些依赖性信息,如地址,联系方式,消息等.这似乎也可以正常工作.

柠檬

在一些用户选择改变之后,即.从数据服务调用更多依赖数据,应用程序停止响应.

崩溃错误:

在00:00:59.9989999之后等待回复时,请求通道超时.增加传递给Request的调用的超时值或增加Binding上的SendTimeout值.分配给此操作的时间可能是较长超时的一部分.

我重新启动调试过程但是应用程序在大约一分钟左右之后才会进行任何数据服务调用,VS 08会显示一个错误消息框:

无法处理来自服务的请求.' http:// localhost:61768/ConsoleService.svc '.灾难性故障.

我用Google搜索了这个错误和相关问题,但没有发现任何用处.

可能的解决方案

我找到了一些关于问题根源的线索.在客户端的app.config中:

  1. maxReceivedMessageSize>设置为更高的值,例如.5242880.
  2. receiveTimeout>设置为更高的值,例如.00:30:00

我试过这些但都是徒劳的.我怀疑只是通过改变一些数字就无法修复潜在的问题.任何线索都会非常感激.

crash wcf

5
推荐指数
1
解决办法
2632
查看次数

C# Newtonsoft.Json.Linq.JValue 始终返回 Int64

我正在使用 Newtonsoft.Json 程序集将 Json 字符串反序列化为动态对象 (ExpandoObject)。我遇到的问题是 int 值总是以 Int64 形式返回,而我期待的是 Int32。代码如下所示。

namespace Serialization
{
    using System;
    using System.Collections.Generic;
    using System.Dynamic;
    using System.Linq;

    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;

    public static class JsonSerializer
    {
        #region Public Methods

        public static string Serialize(dynamic obj)
        {
            return JsonConvert.SerializeObject(obj);
        }

        public static dynamic Deserialize(string s)
        {
            var obj = JsonConvert.DeserializeObject(s);
            return obj is string ? obj as string : Deserialize((JToken)obj);
        }

        #endregion

        #region Methods

        private static dynamic Deserialize(JToken token)
        {
            // FROM : http://blog.petegoo.com/archive/2009/10/27/using-json.net-to-eval-json-into-a-dynamic-variable-in.aspx
            // Ideally in …
Run Code Online (Sandbox Code Playgroud)

.net c# json dynamic

5
推荐指数
1
解决办法
8820
查看次数

WPF绑定与显式转换

我的问题可能是其他转换问题的重复,但我觉得我的不同.

这里... [简化示例].

public class DataWrapper<T>
{
    public T DataValue{ get; set; }

    public DataWrapper(T value)
    {
        DataValue = value;
    }

    public static explicit operator DataWrapper<T> (T value)
    {
        return new DataWrapper<T>(value);
    }

    public static implicit operator T(DataWrapper<T> data)
    {
        return data.DataValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的ViewModel中:

public class ViewModel
{
    public DataWrapper<string> FirstName { get;set; }
    public DataWrapper<string> LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在XAML中:

<TextBlock Text="{Binding FirstName}" />
<TextBlock Text="{Binding LastName}" />
Run Code Online (Sandbox Code Playgroud)

我的问题是,这会有效吗?将WPF绑定调用ImplicitExplicit转换器在我的DataWrapper<T>类,而不是需要实现一个IValueConverter …

data-binding wpf converter type-conversion

4
推荐指数
1
解决办法
2175
查看次数

WPF - Dispatcher PushFrame()

我试图从几个不同的线程调用Dispatcher.PushFrame()但遇到错误:

必须在与DependencyObject相同的Thread上创建DependencySource.

这是一段代码:

_lockFrame = new DispatcherFrame(true);
Dispatcher.PushFrame(_lockFrame);
Run Code Online (Sandbox Code Playgroud)

当我尝试:

Dispatcher.CurrentDispatcher.Invoke(
    DispatcherPriority.Normal,
    new Action(() => _lockFrame = new DispatcherFrame(true));
Dispatcher.PushFrame(_lockFrame);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

对象必须由同一个线程创建.

从不同的线程将多个帧推入Dispatcher的方法是什么?

wpf multithreading dispatcher

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