我是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服务器会抱怨参照完整性。我不希望任何存储过程处理级联删除。任何建议将受到高度赞赏。
感谢。
答案 0 :(得分:2)
CSLA集合是内存中的域对象。当您从集合中删除项目时,该项目将从活动集合中删除,并添加到DeletedList(受保护的集合中)。
当您要求数据门户更新对象图时,您的数据访问代码需要删除DeletedList中的项目并插入/更新活动集合中的项目。
自2007年左右开始,CSLA的版本通过调用集合中包含的子对象中的相应Child_Insert,Child_Update和Child_Delete方法自动执行此操作。
在任何情况下,您都可以在'使用CSLA 4'中找到有关数据门户操作的详细信息。书。