entity-framework - 在 EF Code First 中启用级联删除而不暴露外键

标签 entity-framework one-to-many code-first cascading-deletes

在不公开外键的情况下执行一对多关系的删除时,EF 会删除父记录并尝试将子记录上的外键归零。这当然会导致错误,因为外键不可为空。将外键添加到子类会覆盖此行为,但我宁愿不公开它。

例如,对于以下两个类,我不希望 JobId 作为 Project 类的属性。

public class Job : ModelBase
{
    [Required]
    [StringLength(100)]
    public string Company { get; set; }

    [Required]
    [StringLength(100)]
    public string JobTitle { get; set; }

    public ICollection<Project> Projects { get; set; }
}

public class Project : ModelBase
{
    [Required]
    [StringLength(100)]
    public string Name { get; set; }

    [Required]
    public string Summary { get; set; }

    public int JobId { get; set; }
}

有没有办法在 EF Code First 中启用级联删除而不在关系的多方面暴露外键?

最佳答案

是的!删除 JobId 并添加以下内容:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Job>().HasMany(j => j.Projects).WithRequired();
    }

在数据库中,这会在 PK/FK 关系中添加级联删除。

(我假设您的 ModelBase 有一个整数 Id =)

关于entity-framework - 在 EF Code First 中启用级联删除而不暴露外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366896/

相关文章:

c# - MVC5 SQL 左连接查询

java - 具有一对多映射的 POST REST API : Cannot be null error

entity-framework - Entity Framework (CTP5、Fluent API)。重命名导航属性列

entity-framework - Entity Framework 代码首先是多对多

sql-server - WEB API 2 IQueryable 查询

c# - Entity Framework 引发无效操作异常 - app.config 中未找到连接字符串

java - JPA 一对多 : Impossible to get the children of an entity

python - SQLAlchemy一对多关系,如何过滤集合

entity-framework - EF 4.1 Code First ModelBuilder HasForeignKey 用于一对一关系

c# - 如何获取 Entity Framework 6 中实体的主键字段和默认值?