У меня есть две модели Team и плеерEF установить внешний ключ нуль на родителя удалить
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) при настройке отношений? – SBirthare
Теперь я работаю, но проблема, когда я хочу получить команду, она больше не получает игроков, даже если игрок принадлежит команде – user2412672
. Я добавил конфигурацию, которую я добавил и работал для меня. Я могу удалить, см. Null для TeamId в БД. Затем я запросил элемент, который имеет Null, все работает отлично. Попробуйте. – SBirthare