gpt4 book ai didi

.net - 如何使用 EF CTP5 Fluent API 在一对多关系中关闭级联删除

转载 作者:行者123 更新时间:2023-12-02 00:27:07 24 4
gpt4 key购买 nike

在 Fluent NHibernate 中,您可以设置映射的级联设置,例如

public class StoreMap : ClassMap<Store>
{
public StoreMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Staff)
.Inverse()
.Cascade.None();
HasManyToMany(x => x.Products)
.Cascade.All()
.Table("StoreProduct");
}
}

这是如何在 Entity Framework “代码优先”中完成的?

最佳答案

如果您的模型中有一对多关系,EF 代码首先将按默认约定启用级联删除。因此,您实际上不需要做任何特殊的事情,但让我们考虑一个您想要覆盖约定并关闭级联删除的场景。这就是 EF CTP5 附带的 Fluent API 完成的方式。 今天早些时候:

public class Customer
{
public int CustomerId { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}

public class Order
{
public int OrderId { get; set; }
public int CustomerId { get; set; }
public virtual Customer Customer { get; set; }
}

public class StackoverflowContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
public DbSet<Order> Orders { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasMany(c => c.Orders)
.WithRequired(o => o.Customer)
.HasForeignKey(o => o.CustomerId)
.WillCascadeOnDelete(false);
}
}

关于.net - 如何使用 EF CTP5 Fluent API 在一对多关系中关闭级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com