CSLA删除子对象

时间:2014-04-14 12:49:40

标签: csla

我是CSLA的新手,仍然试图让我的头脑清醒。我需要知道如何通过父对象删除子对象?例如,如果我有一个Project类(父类),它有一些ProjectResources(子),我需要删除一个项目。我如何通过CSLA做到这一点?例如

                Project myProject = Project.GetByProjectID(projectID);
                ProjectResourceList resources = myProject.ProjectResources;
                myProject.Delete();
                if (myProject.IsDeleted)
                {
                    while (resources.Any())
                    {
                        myProject.ProjectResources.Remove(resources[0].ProjectResourceID);

                    }
                }
                myProject.Save();

Remove()不会从数据库中删除它们。显然我无法删除父对象,因为SQL服务器会抱怨参照完整性。我不希望任何存储过程处理级联删除。任何建议将受到高度赞赏。

感谢。

1 个答案:

答案 0 :(得分:2)

CSLA集合是内存中的域对象。当您从集合中删除项目时,该项目将从活动集合中删除,并添加到DeletedList(受保护的集合中)。

当您要求数据门户更新对象图时,您的数据访问代码需要删除DeletedList中的项目并插入/更新活动集合中的项目。

自2007年左右开始,CSLA的版本通过调用集合中包含的子对象中的相应Child_Insert,Child_Update和Child_Delete方法自动执行此操作。

在任何情况下,您都可以在'使用CSLA 4'中找到有关数据门户操作的详细信息。书。