问题标签 [devforce]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

devforce - 无法运行 DevForce Windows Store 示例应用程序

我正在尝试运行 Devforce WindowsStoreDevTour 示例应用程序。但是我得到了这个例外:

System.TypeInitializationException 未被用户代码处理 HResult=-2146233036 Message='WindowsStoreDevTour.NorthwindIBEntities' 的类型初始化程序引发了异常。Source=WindowsStoreDevTour TypeName=WindowsStoreDevTour.NorthwindIBEntities StackTrace:在 WindowsStoreDevTour.NorthwindIBEntities..ctor(Boolean shouldConnect, String dataSourceExtension, EntityServiceOption entityServiceOption, String compositionContextName) 在 WindowsStoreDevTour.DataService..ctor() 在 WindowsStoreDevTour.DataService.get_Instance() 在 WindowsStoreDevTour。 ListPage.d__0.MoveNext() InnerException: System.TypeInitializationException HResult=-2146233036 Message='IdeaBlade.EntityModel.EntityMetadataStore' 的类型初始化程序引发了异常。来源=IdeaBlade.EntityModel。WinRT TypeName=IdeaBlade.EntityModel.EntityMetadataStore StackTrace:在 IdeaBlade.EntityModel.EntityMetadataStore.get_Instance() 在 IdeaBlade.EntityModel.EntityRelation.get_MetadataStore() 在 IdeaBlade.EntityModel.EntityRelation.InitializeEntityRelations(Assembly assembly) 在 WindowsStoreDevTour.NorthwindIBEntities..cctor( ) InnerException: System.Reflection.ReflectionTypeLoadException HResult=-2146232830 Message=无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。Source=mscorlib StackTrace:在 IdeaBlade 的 System.Reflection.RuntimeAssembly.get_DefinedTypes() 中的 System.Reflection.RuntimeModule.GetTypes(RuntimeModule 模块)。2.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 来源,Func`2 谓词)在 IdeaBlade.Core.PlatformResolver.Resolve[T](Boolean throwIfNotFound) 在 IdeaBlade.Core.AppEnv.get_Current() 在 IdeaBlade.EntityModel.EntityMetadataStore..ctor() 在 IdeaBlade.EntityModel.EntityMetadataStore ..cctor() 内部异常:

我不知道如何解决它。

0 投票
1 回答
447 浏览

c# - Better solution for using an Entity Manager in an ASP.NET request?

The current advice for using an Entity Manager in an ASP.NET request seems to be to just set the AuthorizedThreadID property to NULL (reference 1 and 2). While that works, it seems like that is turning off a very important 'safety net'. While I try very hard to use the Entity Manager in a thread-safe way, it is still nice to have that safety net in case I get it wrong...so I'd rather not have to just set it to NULL.

In the ASP.NET world, there is still roughly a single thread of execution - it's just that the actual thread can change when you are doing async work. I can think of a few possible solutions:

  1. The EntityManager.SafeThreadingCheck() method does some kind of extra magic to support ASP.NET requests. I can understand that IdeaBlade might not want to do this...which leads me to the second option...
  2. EntityManager provides some extensibility points for me to provide my own version of SafeThreadingCheck() where I can implement the special magic for verifying that the entity manager is still 'logically' on the request thread. I might have to do some weird stuff here but I don't think it would be terribly complicated.
  3. I try to use other extensibility points to detect when I should call my own FancySafeThreadingCheck() method. This has the downside that I have to try to hook into all the necessary places whereas the existing SafeThreadingCheck() method is already being called (presumably) from all the necessary places at exactly the best time.

I can understand this might not be the highest priority feature request but it also seems like it might not be too hard (at least for option #2). Or perhaps there are some other workarounds that may be better? My end goal is to avoid turning off this safety check...I'm open to options to get there.

0 投票
1 回答
231 浏览

c# - 如何禁用 DevForce 请求的自动重试

我们注意到,当 DevForce 请求超时时,它会自动重试。此处的论坛上也提到了此行为。在该论坛帖子中,建议的解决方案是增加超时以尝试完全避免该问题。对我们来说,这并不是一个真正可行的解决方案。我们知道有些操作会超时,增加超时不是一个可接受的解决方案。

更糟糕的是,如果调用是存储过程查询或 InvokeServerMethod 调用,则该调用很可能不是幂等的所以再次重试是不安全的,很可能最终弊大于利。我们已经开始在我们的应用程序中遇到类似的情况,这造成了很大的痛苦。一个简单的例子是:我们调用一个创建项目副本的存储过程。如果复制花费的时间太长,它将继续重试,但这仅意味着我们有 3 个复制操作都在并行进行。最终结果是最终用户收到错误(因为第 3 次重试仍然超时)但(最终)将有该项目的三个副本(存储过程最终将完成 - 重试逻辑似乎不会取消以前的请求-我什至不确定是否可以取消)。这是比较良性的例子之一 - 在其他情况下,重试操作可能会导致更严重的问题。

我从6.1.6 发行说明中看到,DevForce 不再为保存执行自动重试。我真的很想看到这种行为扩展到 StoredProcedureQueries 和 InvokeServerMethods。对于正常的 EntityQuery 操作(甚至可能是 Connect/Disconnect 调用),我对 rety 很好。如果这不是 DevForce 核心中可以更改的东西,有没有办法让它可配置或提供一些自定义方式让我们注入控制它的代码?

0 投票
1 回答
176 浏览

devforce - Devforce 的 MakeWeak 事件处理程序扩展会造成内存泄漏?

(我正在使用带有 Silverlight 的 DF 7.2.3)

在事件上使用ideablade devforce的MakeWeak扩展来处理它们作为弱引用,我认为它可以防止内存泄漏。但是我注意到所有使用 MakeWeak 的对象都没有被释放。

在对 Viewmodel 的简单测试中,如果我使用 MakeWeak 注册事件,则 GC 永远不会释放 viewmodel。如果我用标准的 += eventmethod 和 -= eventmethode 替换代码,GC 会释放视图模型。

这是我使用 MakeWeak 的方法:

使用EntityManagerCreated方法作为internal

这是一个错误还是我以错误的方式使用它?

0 投票
1 回答
85 浏览

c# - 如何阻止 DevForce 吞下 EntityManager.EntityChanged 事件中的异常

这是此处DevForce 论坛的另一个主题的延续。问题是如果更改是由查询或导入触发的,DevForce 将默默地吞下任何由 EntityManager.EntityChanged 事件引发的异常。相关代码如下所示:

正如论坛主题中提到的,这种方法的行为已经改变了一点超时。现在吞下的东西比我第一次抱怨这个时要少。但是对于我们的应用程序,我们真的需要知道什么时候出了问题。仅仅因为我做查询或导入操作时发生了错误并不意味着我不关心异常。

在上一篇论坛帖子中,这种行为的基本原理是:

吞下 AddOnQuery(和 AddOnImport)期间抛出的异常的论点是“在查询中间失败通常不是开发人员真正想要的”,因为它更有可能是由于事件处理程序编写不当而发生的

也许我们不常见 :-),但在我们的应用程序中,事件处理程序如下所示:

这里抛出的任何异常都不会是因为事件处理程序编写得不好。此处抛出的任何异常都是因为实体在执行一次性初始化逻辑时变得非常混乱。这种逻辑中的错误对我们来说非常重要。

我可以理解,普遍改变它可能是危险的,并导致其他应用程序开始崩溃。但是,如果我们可以通过某种方式关闭此行为或通过其他方式告诉实体管理器不要吞下异常,那将非常非常有帮助。

我们以前的解决方法开始失败,因为我们希望在 Web 服务中使用我们所有的业务逻辑,我们不能仅仅依靠错误日志来处理这种事情。我们不能仅仅因为 DevForce 吞下了一个潜在的致命错误就向调用者返回“成功”响应。

我们使用的是最新版本的 DevForce(撰写本文时:2012 - 7.2.3)。

0 投票
1 回答
275 浏览

c# - 如何在 Devforce 中组合 2 个不同类型的 c# 表达式?

我写了一些谓词,并希望它们构造一个实体查询。

通常,如果我有一个类型的实体,EntityA我会写这种表达式Expression<Func<EntityA, bool>>

我想要完成的是Expression<Func<EntityB, bool>>在 type 的查询中使用EntityA

假设EntityA有一个集合EntityB。我有一个谓词EntityAlike :

现在在查询我的 EntityB 时,我希望能够使用这个谓词以避免在Expression<EntityB, bool>> (with p => p.EntityA.Id == id).

我想要类似的东西:

此语法不起作用。

如何Expression<Func<EntityA, bool>>Expression<Func<EntityB,bool>>谓词中使用 a?

* 编辑 *

忘了提我在我的项目中使用 Devforce(来自 Ideablade)。谓词。并且来自它们(我最初以为我来自系统)。

错误消息是:

未知表达式类型:Invoke(value(UserQuery+<>c__DisplayClass1).myfunc , p.EntityA)

Stacktrace 是:

0 投票
2 回答
18559 浏览

c# - using 语句中使用的类型必须可隐式转换为 system.Idisposable

开始了一个新的 mvc4 项目。使用 MVC 控制器模板创建模型的读/写操作'Orders'。向我的数据库添加了一个新的实体框架连接,并尝试使用新订单对其进行更新。

但是 using 语句正在标记错误:

using 语句中使用的类型必须可隐式转换为 system.Idisposable

所以我必须实现一个idisposable?,每次我想更新数据库时都必须这样做吗?通过stackoverflow搜索了很多类似的Q,但仍然不确定如何处理我的?请指教。谢谢

0 投票
1 回答
170 浏览

wcf - DevForce ServerConsole - 没有端点监听

我有一个使用免费 Windows Store 许可证的基本 DevForce Windows Store 应用程序。

当作为 Web 项目运行时,我能够成功地成功执行查询。

但是,当使用 ServerConsole.exe 托管时,出现以下异常:

没有 http://localhost:63191/EntityService.svc/winrt可以接受来自此应用程序的调用的端点监听。如果在 Visual Studio 中运行,请确保为 Web 项目中的所有 IdeaBlade 程序集引用设置 CopyLocal=true,以确保将这些程序集复制到 bin 文件夹。还要检查 global.asax 是否包含注册 DevForce VirtualPathProvider 的代码,或者是否存在 EntityService.svc 和 EntityServer.svc 文件。
要检查服务是否正在运行,请打开您的 Internet 浏览器并导航到http://localhost:63191/EntityService.svc. 如果服务页面显示错误,这些应该有助于诊断服务问题。如果服务正在运行,那么还要确保客户端和服务器之间的端点绑定匹配,并且服务器的 ClientApplicationType 是“全部”或对于该客户端是正确的。检查服务器的调试日志文件以获取更多信息。

解决方案中有三个项目,App1(Windows 应用商店)、DomainModel(NET4.5)和 App1.Web(Web 应用程序)。ServiceConsole.exe 被复制到 DomainModel 的输出目录中。

ServerConsole 正确报告:

导航到

0 投票
0 回答
299 浏览

c# - .Net 代码优先迁移反射问题

在我的解决方案的包管理器控制台中运行 Update-Database 时,我收到以下错误:

我在其他类似的堆栈溢出讨论中读到,有时可以通过以编程方式运行更新并捕获该异常来获得更多信息,所以我尝试了这个:

上面的代码实际上成功地运行了更新而没有问题(正如在应用程序初始化时由 Web 浏览器运行时的迁移一样),但是包管理器仍然在相同的 Update-Database 命令上失败并出现相同的错误。我检查了启动项目、默认项目、参考复制本地设置、重新生成 ibmmx 文件、数据库恢复,并运行多个 Visual Studio/OS 重新启动。我也尝试通过 powershell 访问异常信息,但没有找到任何东西。有谁知道获取有关包管理器操作失败原因的更多信息的方法?

具有相同基础数据库状态的相同设置(不同的数据库服务器,都在本地主机上)在另一台开发机器上没有问题,因此它似乎是特定于我的设置或安装的东西。还有其他我应该注意的“陷阱”吗?

谢谢。

更新:关于在包管理器之外工作的迁移,我可能谈得太早了。我刚刚在工作的开发机器上做了一个,把它拉到我的本地机器上,发现它不能通过网络浏览器或包管理器中的应用程序初始化工作。

0 投票
1 回答
124 浏览

c# - 如何清除分离的 DevForce 实体的原始值

作为调用的一部分,我们在将某些实体发送到服务器StackOverflowException时遇到了各种情况。问题似乎出现了,因为 DevForce 最终试图序列化比我们预期更多的数据。我将其追踪到存储在.OutOfMemoryExceptionInvokeServerMethodOriginalValuesMap

原始值用于DataEntityProperties我们已添加到实体但未标记的值,[DataMember]因此它们通常不会发送到服务器。 但是,如果我们有一个现有的(以前保存的实体)然后更改其中一个属性,则该属性的初始值最终会被序列化为OriginalValuesMap. 这给我们带来了很大的问题,因为原来的值是一个拥有巨大实体图的实体。

更糟糕的是,我们正在处理的实体实际上((ICloneable)origEntity).Clone()是现有(以前保存的)实体的克隆(通过),因此它们具有分离状态,我还没有找到清除OriginalValuesMap分离实体的方法。通常我会这样做myEntity.EntityAspect.AcceptChanges(),但这对分离的实体没有任何作用。我找不到任何其他简单的方法来做到这一点。

到目前为止,我发现清除原始值的唯一方法是将实体附加到实体管理器。这最终会清除原始值,但这是一个很大的痛苦,因为我实际上正在处理大量实体(因此性能是一个问题)并且其中许多实体没有唯一的主键值(事实上,它们没有填写任何键值,因为它们只是我不打算实际保存的“内存中”对象)所以我需要做额外的工作以避免在将它们添加到实体时出现“重复键异常”错误经理。

有没有其他方法可以清除分离实体的原始值?或者,如果像 AcceptChanges 这样的东西甚至不适用于分离实体,分离实体是否应该首先跟踪原始值?或者,克隆实体不应该“继承”其来源的原始值?我对这些可能性中的任何一种都没有强烈的看法......我只是希望能够序列化我的实体。

我们的应用是运行 DevForce 2012 v7.2.4.0 的 Silverlight 客户端