作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个实体(Customer 和 CustomerRole)并且想声明它们之间的多对多关系。我可以使用以下代码:
modelBuilder.Entity<CustomerRole>()
.HasMany(cr => cr.Customers)
.WithMany(c => c.CustomerRoles)
.Map(m => m.ToTable("Customer_CustomerRole_Mapping"));
最佳答案
从 CTP5 开始,似乎没有办法通过 Fluent API 直接打开多对多关联的级联删除。
也就是说,如果您的目的是确保您可以删除主体(例如客户记录)而不必担心连接表(即 Customer_CustomerRole_Mapping)中的依赖记录,那么您不需要在数据库,因为 EF Code First 将处理多对多关联时客户端的级联删除。
例如,当您删除一个 Customer 对象时,EF 足够聪明,它首先发送一条 delete 语句来删除连接表中的依赖记录,然后它会发送另一个删除语句来删除 Customer 记录。
更新:
由于 CTP5 中的错误,您需要明确地预先/延迟加载导航属性,并在删除依赖项时将其加载到上下文中。例如,考虑这个模型:
public class User
{
public int UserId { get; set; }
public virtual ICollection Addresses { get; set; }
}
public class Address
{
public int AddressID { get; set; }
public virtual ICollection Users { get; set; }
}
using (EntityMappingContext context = new EntityMappingContext())
{
User user = context.Users.Find(1);
context.Users.Remove(user);
context.SaveChanges();
}
using (EntityMappingContext context = new EntityMappingContext())
{
User user = context.Users.Find(1);
((IObjectContextAdapter)context).ObjectContext
.LoadProperty(user, u => u.Addresses);
context.Users.Remove(user);
context.SaveChanges();
}
关于asp.net - Entity Framework CTP5,代码优先。多对多级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4593591/
我是一名优秀的程序员,十分优秀!