C# 实体框架在删除时配置默认值

C# 实体框架在删除时配置默认值,c#,entity-framework-core,C#,Entity Framework Core,我配置了以下关系 Document (1------*) Fonts (1------*) Sections (1) (*) +-----------------------------------+ 文档有多种字体 文档有许多部分 字体有许多部分 所有操作都是通过文档完成的 我是否可以通过实体框架配置实现以下目标,或者EF是否有任何其他类型的机制可以使用 如果我从文档中删除一种字体,并且该字体被某个节引用,

我配置了以下关系

Document (1------*) Fonts (1------*) Sections
    (1)                                 (*)
     +-----------------------------------+
  • 文档有多种字体
  • 文档有许多部分
  • 字体有许多部分
所有操作都是通过文档完成的

我是否可以通过实体框架配置实现以下目标,或者EF是否有任何其他类型的机制可以使用

如果我从文档中删除一种字体,并且该字体被某个节引用,则该节的fontId默认为其他字体

如果我从文档中删除字体,并且该字体被某个节引用,则 节fontId默认为其他字体

忘记英孚-不是英孚的地方可以轻松做到这一点

我将使用INSTEAD OF触发器重定向字体删除,然后设置默认值,然后执行删除


因此,它也可以在纯SQL中正常工作。

每种字体都有一种类型。在windows中,当删除字体时,将根据类型和大小使用最匹配的字体。除EF外,是否可以执行此操作取决于您的数据库。顺便说一句,EF和EF Core的差异太大了,用它们来标记这样的问题是没有意义的。创建另一个调用Delete的函数。例如,
函数void DeleteFont(Font-Font)\u context.Sections.Where(section.Font==Font);[更新为默认字体]_context.font.Delete(字体)_SaveChanges()我喜欢这个答案,因为触发器将在服务器端系统地处理更新和删除的执行,而不必在EF core中构建一个您可能会忘记在意外情况下使用的函数。为了回答您关于如何在EF Core中实现这一点的问题,以下内容可能会有所帮助,但这不是一种非常优雅的创建触发器的方法,因此直接修改数据库可能会更好。另外,请不要忘记,您可能希望在没有efcore的情况下进行这些更改-当您通过ssms执行某些操作时,触发器也会起作用。你很有可能会。在某个时刻。