【发布时间】:2014-12-09 08:37:12
【问题描述】:
我有两个模型 Team 和 Player
public class Player
{
public int Id { get; set; }
}
public class FootballPlayer : Player
{
public int? TeamId { get; set; }
public virtual FootballTeam Team { get; set; }
}
public class BasketballPlayer : Player
{
public int? TeamId { get; set; }
public virtual BasketballTeam Team { get; set; }
}
public class BasketballTeam : Team
{
public int Id { get; set; }
public virtual List<BasketballPlayer> Players { get; set; }
}
public class FootballTeam : Team
{
public int Id { get; set; }
public virtual List<FootballPlayer > Players { get; set; }
}
这是一个配置
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<FootballPlayer>().HasOptional(r => r.Team)
.WithMany(a => a.Players)
.HasForeignKey(b => new { b.TeamId })
.WillCascadeOnDelete(false);
modelBuilder.Entity<BasketballPlayer>().HasOptional(r => r.Team)
.WithMany(a => a.Players)
.HasForeignKey(b => new { b.TeamId })
.WillCascadeOnDelete(false);
base.OnModelCreating(modelBuilder);
}
我使用的是 EF Code First,我想在我删除团队时,不应该删除玩家,只有将 TeamId 设置为 null。如何做到这一点?
【问题讨论】:
-
您在建立关系时是否探索过使用 WillCascadeOnDelete(false)?
-
我现在工作,但是当我想检索团队时,即使玩家属于团队,它也不再检索玩家了
-
我已经添加了我添加并为我工作的配置。我可以删除,请参阅数据库中 TeamId 的 Null。然后我查询了有Null的项目,一切正常。试一试。
-
查看我的更新。该脚本应允许您删除团队并将 TeamId 设置为 null。我已经对其进行了测试,可以与您的实体一起使用。
标签: .net asp.net-mvc database entity-framework constraints