Entityframework实体更新仅在调试模式下运行时才有效

时间:2017-03-01 18:31:08

标签: c# entity-framework-6

我有4个相关实体,如下所示

public class VariantOption
{
     public virtual Variant Variant { get; set; }
 }

public class ProductVariant 
{
   public virtual Product  Product { get; set; }
   public virtual Variant  Variant { get; set; }
   public virtual VariantOption DefaultVariantOption { get; set; }
   public virtual List<VariantOption> Selected_Options { get; set; }
}

public class Product
{
   public virtual List<ProductVariant> ProductVariants { get; set; }
}

public class Variant
{
   public virtual List<VariantOption> Var_Options { get; set; }
   public virtual VariantOption DefaultVariantOption { get; set; }
}       

在更新方法中,我执行类似

的操作
 public bool UpdateProductVariant(ProductVariant productVariant){
      var dbProductVariant = context.ProductVariant.Find(productVariant.Id);

      dbProductVariant.DefaultVariantOption = context.VariantOptions.Find(productVariant.DefaultVariantOption.Id);
      dbProductVariant.VariantOptions.Clear();
      dbProductVariant.VariantOptions = 
        productVariant.VariantOptions.Select(x => context.VariantOptions.Find(x.Id)).ToList();

      context.SaveChanges();
 }

问题是这个

  1. 如果列表和默认值中都存在变体选项,则会保存新的默认值
  2. 如果选项列表中不存在默认值,则不保存新的默认值
  3. 如果选项列表中不存在默认值,但应用程序在更新方法上使用断点的调试模式下运行,则保存新的默认值

0 个答案:

没有答案