首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSLA4.5.600 -> CSLA5.3.1迁移大问题

CSLA4.5.600 -> CSLA5.3.1迁移大问题
EN

Stack Overflow用户
提问于 2020-10-17 10:50:15
回答 1查看 147关注 0票数 0

我们已经使用CSLA 4.5.600多年了,由于某些原因,迁移到每一个更新的版本被推迟。

现在,我们希望迁移到最新版本(5.3.1)

大多数情况下,我们都有编译错误(接口作为输入参数而不是对象等等),但是我们已经做好了准备。最后,我们修复了所有编译时错误。进行了测试,他们中的大多数人都没事。

但是我们还没有准备好面对“子”对象的问题。

似乎,在CSLA内核内部有一些很深的变化,产生了很难找到的bug。

似乎,它适用于房地产公司IsNew IsDirty IsSavable等。

示例:

我们有一些类,让我们把它命名为父级

我们有一些类,它是这个对象上的一个属性。

我们有桌子Table1Table2

我们创建了一个对象Parent1,它必须存储在Table1中,他的属性将存储在表1e 225中的Table2 (parentid)必须针对父母1‘id中。

我们创建了一个对象Parent2,它必须存储在Table1中,而他的Child属性(parentid)必须以Table1中的父母2‘id为目标。

在CSLA 4.5.600中,我们做了这样的事情:

代码语言:javascript
复制
Csla.Data.DataMapper.Map(parent1, parent2, true);
Csla.Data.DataMapper.Map(parent1.Child, parent2.Child, true);

Child property on parent2有:

代码语言:javascript
复制
IsNew = true
IsDirty = true
IsSavable = true

但是,如果我们使用的是CSLA5.3.1,这段代码提供了如下内容:

代码语言:javascript
复制
IsNew = FALSE (!!!!)
IsDirty = true
IsSavable = true

因此,它不是在Table2中为父级的两个孩子创建一个新记录,而是更新父对象的子属性的记录!

因此,CSLA 5.3.1的解决办法是:

代码语言:javascript
复制
string[] ignoreList = new string[] {"Child", "IsNew", "IsDirty" };
Csla.Data.DataMapper.Map(parent1, parent2, true, ignoreList );
Csla.Data.DataMapper.Map(parent1.Child, parent2.Child, true, ignoreList );

但是,嗯,我们有几百节课。我们的项目在很大程度上基于CSLA。当然,没有更新所有最新的CSLA版本是非常大的错误,即使我们有理由继续使用旧版本,但是,现在是2020年10月,当引入时,我们需要理解它,是如何影响到的不仅是映射,还有其他东西?

问题不仅在于找到解决这个映射的方法,

这样做的目的是了解CSLA内部深处的变化如何影响到CSLA的所有功能,而CSLA功能也是“坏的”,但是我们不知道这是因为没有编译错误而破坏的,我们有大约60%的现有代码基/功能的测试覆盖率,但是40%的测试仍然没有测试,所以

几年前,我们买下了所有的CSLA书籍,但它们都是针对CSLA 4的,所以,他们无法帮助我们处理CSLA 5的违规行为。

阅读github“发布说明”并没有多大帮助。是否有博客文章、youtube视频或其他可以解释上述问题的东西?

EN

回答 1

Stack Overflow用户

发布于 2020-10-19 04:20:19

这可能是#cslanet中的一个bug --尽管CSLA本身的测试并没有改变,而且还在继续通过。

你能提供一个简单的复制问题,并将其作为一个问题在回购吗?

https://github.com/MarimerLLC/csla/issues

(听起来这个bug可能在DataMapper中,它确实得到了一些更新,因此有可能在那里引入了一个bug )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64401615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档