Sql server Blazor应用程序中的删除操作级联(不需要),但在SQL Server Management Studio中,setDefault正在工作(需要)
我有一个blazor服务器端应用程序,使用最新的EF Core 3.1访问SQL server Express数据库 我希望删除操作将依赖实体设置回默认值Sql server Blazor应用程序中的删除操作级联(不需要),但在SQL Server Management Studio中,setDefault正在工作(需要),sql-server,entity-framework-core,crud,blazor-server-side,Sql Server,Entity Framework Core,Crud,Blazor Server Side,我有一个blazor服务器端应用程序,使用最新的EF Core 3.1访问SQL server Express数据库 我希望删除操作将依赖实体设置回默认值int(1) 通过注释设置从属实体,如下所示: 公共课 { [关键] [显示(Name=“Kurzus Azonosító”)] 公共int Id{get;set;} //其他属性 [显示(Name=“Típus”)] [默认值(1)] 公共整数VariantID{get;set;}// { options.UseSqlServer(Confi
int(1)
通过注释设置从属实体,如下所示:
公共课
{
[关键]
[显示(Name=“Kurzus Azonosító”)]
公共int Id{get;set;}
//其他属性
[显示(Name=“Típus”)]
[默认值(1)]
公共整数VariantID{get;set;}//
{
options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”),
SQLServerOptions操作:sqlOptions=>
{
sqlOptions.EnableRetryOnFailure();
})
.EnableDetailedErrors()
.EnableSensitiveDataLogging(Configuration.GetValue(“Logging:EnableSqlParameterLogging”))
.UseQueryTrackingBehavior(QueryTrackingBehavior.NotTracking);
});
//其他服务
services.AddTransient();
services.AddTransient();
添加迁移时,自动设置我的外键:
migrationBuilder.AddForeignKey(
名称:“FK_课程_变体_变体”,
表:“课程”,
列:“VariantID”,
原则:“变体”,
主栏:“Id”,
onDelete:引用。级联);
我可以将其编辑为:onDelete:ReferentialAction.SetDefault
更新数据库后,我可以在SQL Server Management Studio中验证表设计:
CONSTRAINT [FK_Courses_Variants_VariantID]
FOREIGN KEY ([VariantID]) REFERENCES [dbo].[Variants] ([Id]) ON DELETE SET DEFAULT
这里出现了一个奇怪的部分:如果我按以下顺序操作,setDefault将正常工作:
公共接口IVariantService
{
任务Get();
任务获取(int-id);
任务添加(变量);
任务更新(变量);
任务删除(int-id);
}
公共类VariantService:IVariantService
{
私有只读应用程序的bContext\u上下文;
公共变量服务(ApplicationDbContext上下文)
{
_上下文=上下文;
}
公共异步任务Get()
{
返回等待上下文变量
.AsNoTracking()
.ToListAsync();
}
公共异步任务Get(int-id)
{
var variant=wait_context.Variants.FindAsync(id);
返回变量;
}
公共异步任务添加(变量)
{
_context.Variants.Add(variant);
wait_context.SaveChangesAsync();
返回变量;
}
公共异步任务更新(变量)
{
_context.Entry(variant.State=EntityState.Modified;
wait_context.SaveChangesAsync();
返回变量;
}
公共异步任务删除(int-id)
{
bool isDeleted=false;
var variant=wait_context.Variants
.FindAsync(id);
if(变量!=null)
{
_删除(变体);
wait_context.SaveChangesAsync();
isDeleted=真;
}
返回被删除;
}
}
这种行为的根本原因是什么
我希望这是一个清晰的解释,谢谢你的反馈