我有“多对多的关系”,它在本地机器上完美运行,直到移动到服务器为止。在移动期间,抛出了运行时错误。在升级到Entity Framework 6后,它运行起来了,但是......“多对多关系”中的一个被打破了。
模型有很多属性,它们看起来像这样:
public partial class CartItem
{
public int id { get; set; }
public virtual ICollection<ProductOptionValue> ProductOptionValues { get; set; }
}
public class CartItemMapping : EntityTypeConfiguration<CartItem>
{
public CartItemMapping() : base()
{
this.HasMany(e => e.ProductOptionValues).WithMany(e => e.CartItems)
.Map(e => e.ToTable("CartItemOptions").MapLeftKey("productOptionValueId").MapRightKey("cartItemId"));
}
}
public class ProductOptionValue
{
public int id { get; set; }
public virtual ICollection<CartItem> CartItems { get; set; }
}
public class ProductOptionValueMapping : EntityTypeConfiguration<ProductOptionValue>
{
public ProductOptionValueMapping() : base()
{
this.HasMany(e => e.CartItems).WithMany(e => e.ProductOptionValues)
.Map(e => e.ToTable("CartItemOptions").MapLeftKey("cartItemId").MapRightKey("productOptionValueId"));
}
}
获取之前保存的CartItems时,ProductOptionValues的count = 0,无法保存新的。
我在另一个论坛上发现了这个问题,只有答案是,这种关系在更新后根本不起作用。但也许有解决方案?
或者可能知道为什么在使用Entity Framework 5的服务器上抛出运行时错误?
修改
错误:
INSERT语句与FOREIGN KEY约束冲突 “FK_CartItem_CartItemOptions”。冲突发生在数据库中 “database”,表“dbo.CartItems”,列'id'。声明一直如此 终止。
保存不公开外键的实体时发生错误 他们关系的属性。 EntityEntries属性将 返回null,因为无法将单个实体标识为源 例外。可以在保存时处理异常 通过在实体类型中公开外键属性更容易。有关详细信息,请参阅InnerException。