问题标签 [csla]

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

.net - 如何将同一程序集的多个版本添加到 gac

我的一个 ASP.NET 网站使用两个不同的业务对象类库。这两个库之间有一个通用框架 DLL (CSLA.dll)。问题是一个库想要升级到 CSLA v.4.0.1 而另一个想要保持在 v.2.1.4。

如何解决网站上的这种冲突?我想我需要将两个版本的 CSLA 都安装到 GAC 中,但我不知道如何做两件事

  1. 将相同 DLL 的不同版本添加到 GAC(我gacutil -i在两个 CSLA.dll 上都使用过。我在 .NET Configuration 2.0 工具中看到 CSLA.dll 2.1.4,但在C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL\Csla
  2. 让网站引用两个不同的版本

在此先感谢您的帮助

0 投票
1 回答
4142 浏览

c# - 要成为 XML 可序列化的,从 ICollection 继承的类型必须具有 Add 的实现

我有来自现有项目的 CSLA(1.x 框架)对象,我试图在新的 .Net 4.0 项目中使用这些对象。这些对象正在生产中使用,如果没有 2 组对象,我真的无法将它们转换为 2.x 或 EF。

在我的 c# webservice 中(当我尝试运行它时)我收到以下错误:

就像我说的,这些对象是用 vb.net 编写的 CSLA 对象。我不知道在哪里看这个。这是 .Net 4.0 试图与 CSLA 1.x 对话的问题,还是 Web 服务问题(因为这些对象最初从未使用过 Web 服务)?

有谁知道我应该在哪里解决这个问题?我是否应该建议转换为 CSLA 2.x?

任何建议表示赞赏!

0 投票
1 回答
275 浏览

c# - 对象池和 CSLA 框架

我有一个遵循 CSLA 框架中基本方法的应用程序。具体来说,对象知道如何维护它们的状态以及如何创建、更新、删除自己。汽车类显示了这个想法。

该应用程序创建和销毁超过 100 万个对象,并且由于正在进行的垃圾收集量,对象创建的数量正在影响性能。还有很多这些对象是完全暂时的,用于简单地将数据传递到存储库。

我已经阅读了似乎可能适合我需要的享元模式。而且我还阅读了有关对象池和相关代码的信息。

我遇到的问题是使用池创建一百万个 Car 对象,或者结合Object 的原则将 Flyweight 的数据外部化,应该维护它自己的数据和数据访问

关于如何做到这一点的任何想法?

0 投票
3 回答
530 浏览

c# - CSLA 框架 CanReadProperty

CSLA.NET Framework 中,CanReadProperty方法的用途是什么?

0 投票
1 回答
800 浏览

unit-testing - 单元测试 CSLA 异步验证规则

我在 CSLA Business Base 原型类上有一个验证规则。我无法弄清楚如何对验证规则进行单元测试,因为它包含一个异步回调 lambda 表达式。这是一些示例代码:

我想用类似于以下的测试来测试它:

但是,测试断言在异步回调之前运行。这是 UnitDriven 可以提供帮助的吗?我看过它,但看不到在这种情况下如何使用它。

谢谢,汤姆

0 投票
1 回答
750 浏览

c# - 多线程 CSLA.NET

我有一个程序,我们想在某个时间点进行多线程处理。我们将 CSLA 用于我们的业务规则。在我们程序的一个位置,我们正在迭代一个 BusinessList 对象,并一次对一行数据运行一些完整性检查。当我们将行数增加到大约 10k 行时,运行该过程需要一些时间(大约一分钟)。自然,这听起来像是使用一点 TPL 并使其成为多线程的理想场所。

这些年来我已经完成了大量的多线程工作,所以我理解从单线程代码切换到多线程代码的陷阱。我惊讶地发现代码在 CSLA 例程中被炸毁了。它似乎与 CSLA PropertyInfo 类背后的代码有关。

我们所有的业务对象属性都是这样定义的:

关于多线程和 CSLA,我有什么需要了解的吗?有没有在任何书面文件中找不到的警告(我还没有找到任何东西)。

- 编辑 - -

顺便说一句:我实现多线程的方式是将所有行放入 ConcurrentBag 中,然后生成 5 个左右的任务,这些任务只是从包中抓取对象直到包为空。所以我不认为问题出在我的代码中。

0 投票
1 回答
291 浏览

csla - 为什么 PropertyInfoManager 不像 FieldManager 那样包含在 BusinessBase 中?

我知道 FieldManager 在 BusinessBase 中作为受保护的属性公开。为什么 PropertyInfoManager 的设置方式不同?据我所知,PropertyInfoManger 维护一个类型字典和每个类型的 PropertyInfo(s) 的列表。在 BusinessBase 中维护一个 PropertyInfo(s) 列表似乎更容易,类似于 FieldManager 的工作方式。在 PropertyInfoManager 中完成了很多工作来将注册的 PropertyInfo 与它们所属的类型联系起来。

我确信这是有原因的,我只是没有看到或理解它。我只是想更多地了解 CSLA 以及为什么事情是这样构建的。

0 投票
1 回答
8282 浏览

c# - 使用 SqlCommand 返回值

我正在尝试获取 SQL 2008 服务器上存储过程的结果集和返回值。当我在 sql management studio 中运行 proc 时,我得到了结果集和返回值。

但是,当我尝试在 C# 4.0 中获取值时,参数的值为 null。这是我的 C# 代码:

我调用 Result.Value.TotalResults = (int)cm.Parameters["@ReturnValue"].Value; 的最后一行 是 Value 为空的地方。我发现的每一个教程或帖子,我似乎都做对了。在这一点上,我想我只是缺少一些小东西,需要另一双眼睛。我还尝试在所有其他参数之前设置返回参数,因为我在 MS 网站上找到的一篇文章说我需要这样做,但无论它在哪里,它都会返回 null。

0 投票
3 回答
302 浏览

c# - 需要域建模建议 - 希望是常见的场景

并提前感谢您的时间。

我们使用的是 CSLA 3.5.1,尽管最终这个问题可能与 CSLA 没有太大关系。

我的公司在常见建模错误的道路上走了很长一段路,最终不得不面对它。我已经简化了下面的域对象以澄清问题:

我们有 3 个这样定义的类:

类人:BusinessBase

班级学生:人

班主任:人

我们在 ORM 中使用 NHibernate,Student 和 Teacher 类在我们的映射中是 Person 的子类(我们有 Person、Student 和 Teacher 表),使用 PersonID 作为派生键。

正如您可能已经预料到的那样,问题是现在我们有一个学生也可以成为老师的情况。在当前的对象和数据模型下,当我们尝试添加一个已经是教师的学生时,这会导致主键冲突,反之亦然。

问题一:在保存新记录之前,我可以在业务对象上执行任何 CSLA 魔术来防止这种情况吗?

如果不...

在研究这个问题时,我看到了两个解决它的建议,第一个是支持组合而不是继承。据我了解,这意味着 Student 和 Teacher 将各自包含一个 Person 属性。

问题二:为了让它工作,假设学生表和教师表需要一个外键进入 Person 表是否正确?我想我对这个解决方案没有完整的了解,并希望得到一些指导。

第二种解决方案涉及将学生和教师视为特定人所扮演的角色。从我所见,Person 类需要一个 Roles 集合,并且链接表(PersonRoles?)用于将 Student 和 Teacher 表中的记录映射到 Person。

问题三:Role 基类和 PersonRoles 表是什么样的?我相信 Student 和 Teacher 子类只会包含它们适当的属性。它是否正确?

对解决方案有任何意见吗?如果有人能在网上找到一个充实的例子,我很乐意看到它。

谢谢,

将要。

0 投票
1 回答
383 浏览

winforms - CSLA、BusinessCollectionBase 和 ITypedList

我正在为一个使用在 pre-.NET 2.0 CSLA 上建模的业务对象的客户端开发一个大型 Winforms 项目。升级到较新版本的 CSLA 不是一种选择。我的客户使用 CodeSmith 从数据库表中生成“基本”CSLA 风格的业务对象。所有业务对象都带有相应的“列表”类。

我遇到的问题之一是绑定到 Winforms 控件,因为生成的 List 类不实现ITypedList. 客户告诉我,我可以扩展 List 类并自己实现它(他们提供了下面的代码片段),但是要处理很多业务对象,并且每次扩展 List 之一时都违反 DRY要实现的类ITypedList。我在每个扩展 List 类中使用以下代码:

CreateContent只需返回 List 是其集合的项目的新实例:

我一直在试图弄清楚是否有一种方法可以使用继承来避免在每个 List 类扩展中重复相同的代码,但还没有弄清楚如何在没有多重继承的情况下做到这一点,我们都知道不是反正可能。如果我创建一个ListExtensionBase实现 的类ITypedList,我的扩展类不能从两者继承,ListExtensionBase并且在上面的示例中SomeItemListBase,如果我使用泛型参数创建基类,我将无法直接访问所有基类成员。我无法控制如何SomeItemListBase生成,并被指示按原样使用他们的业务对象框架。有什么办法可以ITypedList在每个 List 扩展中使用相同的代码实现吗?我是否应该为每个实现使用相同的代码,还是应该ITypedList每个扩展的实现都不同?