我有一个 Code First EF 5.0 模型,它具有以下结构:
public class Widget
{
public virtual Int32 Id { get; set; }
public virtual String Name { get; set; }
}
public class Product
{
public virtual Int32 Id { get; set; }
public virtual ICollection<Widget> Widgets { get; set; }
public virtual AddWidget(Widget widget)
{
Guard.NotNull(widget);
if (Widgets == null)
{
Widgets = new List<Widget>();
}
Widgets.Add(widget);
}
}
当我尝试保存Product
一个添加了多个的新瞬态时Widget
,仅Widget
保存第一个添加的瞬态:
// ProductManagementContext is a DbContext
// ProductManagementContext.Products is a DbSet<Product>
using(var context = new ProductManagementContext())
{
var product = new Product();
product.AddWidget(new Widget() { Name = "Foo" } );
product.AddWidget(new Widget() { Name = "Bar" } );
context.Products.Add(product);
context.SaveChanges();
}
此时,Widget
表中只存在“Foo”。我使用 SQL Server Profiler 检查进入数据库的数据,并且只为添加了两个的集合中INSERT
的第一个发出一个语句。Widget
为什么 EF 不在两个新实体上级联?