问题标签 [sharp-architecture]

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 回答
1372 浏览

c# - 零星的“来自程序集的类型中的方法 'get_Session' 没有实现”

突然间,我开发的 Web 应用程序开始向用户提供此错误消息,但不是对我,而且只是有时。

我知道这个错误可能是由接口程序集和实现程序集参考版本不匹配引起的。但是我很长时间没有更新夏普的版本(这个项目仍然使用很旧的版本)。此外,错误并不总是发生,如果是错误的程序集,我想它总是会失败。

可能是什么原因?框架中是否有任何跟踪/登录工具可以查找?

这是 SafeSessionStorage。它是 SharpArch 的稍作修改的版本,以支持在后台线程中运行。

这是发生错误的地方:

这里 InitSession 需要 ISessionStorage 并通过 SafeSessionStorage,所以我想这就是类型检查失败的地方。我会怀疑程序集版本,但正如我所说,它总是对我有用,有时也对用户有用。

0 投票
2 回答
892 浏览

c# - 使用复合 ID 的自动映射不起作用

我正在使用 Sharp-Architecture 框架,并且我有一个如下所示的实体:

我有一个看起来像这样的自动映射覆盖:

我得到了这个例外:

----> NHibernate.MappingException:无法确定类型:iPFS.Core.Baan.BaanAlternateItemKey,iPFS.Core,版本=0.0.4154.21888,Culture=neutral,PublicKeyToken=null,对于列:NHibernate.Mapping.Column( ID)

我不知道我做错了什么。有什么建议么?

更新:如果我使用流利的映射来映射它,它工作正常:

0 投票
2 回答
1188 浏览

c# - NHibernate 并发问题

我有一个 S#arp Architecture 应用程序,它实现了一个轻量级队列处理的东西,各种线程从列表中提取实体并设置它们的状态以标记处理已经开始处理这些项目的事实。

尽管将启动处理位包装在显式事务中并使用 C# lock(),但有时我仍然让它们同时启动。

我是否后悔没有使用 MSMQ ......嗯,是的,但现在这种并发行为让我感到困惑。显然,我对 NHibernate 事务和刷新有一些不理解的地方。你能帮我吗?

这是相关的代码位:

我本来希望这可以保证一次只有一个线程可以更改“事物”的状态,但是我经常在日志中得到这个:

..然后两个线程都尝试对同一事物进行操作并造成混乱。

我错过了什么?谢谢。

编辑:更改代码以反映我的日志记录在真实版本中的工作方式

0 投票
1 回答
271 浏览

sharp-architecture - Sharparchitecture 从 1.5 升级到 1.9 错误

我已将 SharpArchitecture 从 1.5 升级到 1.9。

我已经按照这里的指南http://blog.sharparchitecture.net/post/Sharp-Architecture-19-released.aspx,并确保我为各种 DLL 设置了“copy local = true”,但我仍然收到运行网站时出现以下错误:

有谁知道我可能忘记了什么?

0 投票
1 回答
243 浏览

asp.net-mvc - 领域模型 - 业务验证/错误

我目前正在重构我的项目,我不太确定的一件事是如何处理业务验证错误。

目前我正在使用 xVal 库中的 RulesException 类,我相信这个库不再被开发,所以我可能需要相应地更新我的代码......这是我在域模型上的一种方法的示例:

然后我在控制器级别捕获这个异常,如下所示:

你会推荐什么作为替代方案,或者你会推荐我坚持我所拥有的?

0 投票
1 回答
301 浏览

nhibernate - 将 NHibernate 从 2.1 升级到 3.0 时,CommonServiceLocator 中缺少 ISessionFactoryKeyProvider

我有一个 ASP.NET MVC 应用程序,它使用 Spring.NET 1.2 进行依赖注入,使用 NHibernate 2.1 进行 ORM。它一直在 MVC 3 上运行,使用 S#arp 架构在我们自己编译的略微修改的版本中,我现在正在努力摆脱它。(即我将开始使用引用的 SharpArch .dlls 而不是纯源代码。)

Spring 的初始化是使用从此处获取的提示以及使用此处找到的 SpringServiceLocatorAdapter 完成。NH 使用 SharpArch 的 NHibernateSession.Init 进行初始化,它给定了我们的两个组装路径。映射是使用 HBM XML 文件完成的。

迁移到 NH 3 的决定导致了严重的 DLL Hell 案例,因此我当然不得不更新 FluentNH、NH Validator、SharpArch、Spring 和 Castle Windsor 二进制文件。为了让事情顺利进行,需要大量的体力劳动,更改引用并进行较小的代码修复。这都是意料之中的。

现在我的软件运行良好,Spring 已初始化并且 DI 正确完成。但是当存储库尝试使用它的 Session 对象时,我收到以下错误。

创建名称为“”的对象时出错:未定义“SharpArch.NHibernate.ISessionFactoryKeyProvider”类型的服务

在一天的大部分时间里,我一直在试图找出造成这种情况的原因。在我看来,SpringServiceLocatorAdapter 似乎已过时,但我找不到有关此的信息。此外,简单地删除它的使用会导致存储库的 Sessions 为 null,从而导致 NullReferenceExceptions。但据我所知,问题也可能是 NH 的初始化方式。

希望有人能指出我正确的方向。我很难过,因为我不是一开始就设置系统的人,而且很难找到版本升级的重大更改列表。

非常感谢!如果需要,我当然会提供更多信息。

0 投票
2 回答
916 浏览

fluent-nhibernate - Nhibernate.linq Session.Query 忽略 not.lazyload

我正在使用 SharpArch,我扩展了存储库,添加了以下方法:

现在我可以在 nibernate.linq 中使用 lambda 表达式和规范:

我的问题是它忽略了我的实体映射的 Not.Lazyload。

相反,如果我使用由 sharpArc 提供的带有 Dictionary 的 FindAll,它可以在没有延迟加载的情况下正常工作。

使用反射这就是他们所做的:

谢谢

0 投票
1 回答
2331 浏览

multithreading - 将 SharpArchitecture 的 NHibernateSession 与不同的线程结合使用

我在 ASP.NET MVC 3 应用程序中使用 SharpArchitecture。一切都很好。

使用 SharpArchitecture 的 NHibernateInitializer 为每个请求初始化一个新的 Session,如下所示:

正如您所看到的,我们还访问了多个数据库。这一切都很好。

这是我遇到问题的地方。

我需要启动一个单独的线程来执行数据库轮询机制。我的意图是做这样的事情:

通过我的 SynchronizationService,调用了一些存储库。显然,当他们尝试访问他们的会话时,会抛出异常,因为 Session 为空。

这是我的问题。如何利用 SharpArchitecture 的 NHibernateSession 并以某种方式拥有它或它的副本,在我的轮询线程中旋转?我希望这可以在不必绕过使用 SharpArchitecture 使用的内置 SessionManagers 和 SessionFactories 的情况下完成。

0 投票
2 回答
58 浏览

nhibernate - 论坛临时用户的数据模型

我创建了一个论坛,但现在发现要创建更多流量,我需要允许匿名用户添加帖子。

这个想法是,没有帐户的用户可以写一篇文章,并填写以下字段(就像你可以使用 stackoverflow 一样):

[用户名][电子邮件][消息]

数据模型看起来像这样(有点简化):

现在的问题是,扩展现有数据模型以支持匿名用户的最佳方式是什么。匿名用户不需要像普通用户一样的所有字段,例如地址等。实用的方法是创建一个描述不同类型用户的 UserType,或者我可以使用用户的一些继承,但这需要相当多的重做。

我忘记了第三种选择吗?

0 投票
1 回答
656 浏览

nhibernate - SaveOrUpdate 正在尝试将 NULL 插入主键字段

我正在使用 Sharp Architecture 创建一个小应用程序,但遇到了一个我无法弄清楚的错误。我认为这与 NHibernte 映射有关。在我的 HttpPost Create() 方法中,我的 SaveOrUpdate 调用试图将 null 插入到表的主键字段中。我的模型中主键的声明是public virtual int Id { get; protected set; }.

我检查了 newSprint.Id,它是零。我认为问题出在我的 NHibernate 映射上,所以我将所有这些都包括在下面。

这是自动映射配置:

自动持久性模型生成器:

提前感谢任何人可以提供的任何帮助。

编辑我发现问题出在表名称约定上。从 AutoMapping 配置中删除它解决了这个问题。我已经删除了无关代码并添加了 TableNameConvention 映射,希望有人可以解释它具体是什么导致了这些问题。