【发布时间】:2019-10-17 09:13:38
【问题描述】:
我使用以下模型构建器在我的数据库上设置我的关系。
在我的数据上下文中我有;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(schema: DbGlobals.SchemaName);
modelBuilder.AddConfiguration<Address>(new AddressConfiguration());
/*reduced for brevity*/
base.OnModelCreating(modelBuilder);
}
在AddressConfiguration() 中我有以下内容;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Data.EF.Configuration
{
internal class AddressConfiguration : DbEntityConfiguration<Address>
{
public override void Configure(EntityTypeBuilder<Address> entity)
{
entity.HasKey(x => x.Id);
entity.Property(x => x.Latitude).HasColumnType($"decimal(9,6)").IsRequired();
entity.Property(x => x.Longitude).HasColumnType($"decimal(9,6)").IsRequired();
//I have tried the following but it says doesnt exist
//entity.OnDelete(DeleteBehavior.Cascade);
}
}
}
现在我的地址模型有一个List<Contact> Contacts { get; set; }。如何配置模型。删除地址时删除级联?
我找到了以下链接;
详细说明OnDelete 方法,但EntityTypeBuilder<T> 上似乎没有?
谁能告诉我我在这里做错了什么?
【问题讨论】:
-
是的,当它试图删除一个项目时,由于 FK 引用,它会抛出一个错误。
-
你试过
.OnDelete(DeleteBehavior.Cascade)吗? -
@viveknuna 是的,我收到
does not contain a defination for OnDelete错误,我将更新问题以包含我的 using 语句 -
在
Microsoft.EntityFrameworkCore -
级联删除是一种关系行为,而不是实体。因此
OnDelete仅在关系配置流式 API 上可用,如链接 btw 所示。并且无需寻求外部资源,EF Core 文档是第一个开始的地方。在你的情况下,Relationships - Cascade Delete
标签: c# entity-framework-core asp.net-core-2.0