我想在Angular/Breeze应用程序中删除父项和子项实体。微风删除父指导PK和孩子被修改
支持存储是一个代码优先的实体框架。
的实体如下:
public class Ingredient
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public virtual ICollection<IngredientDescription> Descriptions { get; set; }
}
public class IngredientDescription
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public Guid IngredientId { get; set; }
[ForeignKey("IngredientId")]
public virtual Ingredient Ingredient { get; set; }
public string Description { get; set; }
[Required]
public int Culture { get; set; }
}
当我删除的成份,我需要删除IngredientDescription。我试过两种方法,我先删除(儿童,父母或父母,然后是孩子)。
每当我删除成分(父母)时,微风将儿童IngredientDescription.IngredientId设置为Guid.Empty或{0000-0000 -...}。这导致儿童实体处于Modified状态(与已删除的对象已经设置它们相对)。
我已经尝试过所有我能想到的,以便从客户端代码中获得此功能。我已经通过预览控制器中的更改并将其重新标记为已删除来实现它。但是,我想只是从客户那里得到它的工作。
我不必为了防止Breeze将其从“已删除”修改为“已修改”而删除级联删除。
我的客户方功能如下:
function removeIngredient(ingredient) {
var descriptions = ingredient.descriptions;
for (var d = 0; d < ingredient.descriptions.length; d++) {
var thisDescription = ingredient.descriptions[d];
thisDescription.entityAspect.setDeleted();
}
ingredient.entityAspect.setDeleted();
}
我如何能保持微风从标记为修改后,我已经将其标记为删除的子对象有什么想法?
下面是一个孩子的EntityState被设置为从removeFromRelations调用修改的图像。
a busy cat http://s3.amazonaws.com/stack-overflow-tjb/problem.png
您好变为如下的功能。感谢您花时间研究这一点。我们正在使用以下微风版本: 版本:“1.5.0”, metadataVersion:“1.0.5” 我已经添加了一个图像到原始的职位,其中子实体被设置为修改。请让我知道这是否有帮助。请让我知道我还能做些什么来帮助你。 你认为这与Guid的关键类型有关吗? 再次感谢。 – 2014-10-21 13:30:36
我似乎无法重现您的问题。我已经尝试过Guid和Ints。我的模型唯一的区别是我的外键是空的,听起来像你的不是。你的成分描述本身是否有孩子?如果你可以用breeze.js示例中的DocCode模型重新编译,我可以修复它。 DocCode中最接近的对象将是Customer和Orders实体。客户的关键是一个GUID,它有一个'订单'属性,其中每个订单都将客户的CustomerID作为外键。 – 2014-10-21 20:40:15