Я получаю ошибку Introducing FOREIGN KEY constraint 'FK_Company_Company_ParentId' on table 'Company' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
при попытке обновить базу данных, которая содержит класс, который ссылается на себя.
Класс, который порождает проблему:
public class Company
{
public Country Country { get; set; }
[Required]
public int CountryId { get; set; }
[Required]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public Company Parent { get; set; }
public int ParentId { get; set; }
}
Мой dbcontext выглядит следующим образом:
using System;
using System.Collections.Generic;
using System.Text;
using ArtGalleries.Domain;
using Microsoft.EntityFrameworkCore;
namespace ArtGalleries.Data
{
public class ArtGalleriesContext:DbContext
{
public ArtGalleriesContext(DbContextOptions<ArtGalleriesContext> options):base(options)
{
}
public DbSet<ArtItem> ArtItems { get; set; }
public DbSet<Artist> Artists { get; set; }
public Company Companies { get; set; }
public DbSet<Floor> Floors { get; set; }
public Location Locations { get; set; }
public DbSet<Room> Rooms { get; set; }
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserLocation>()
.HasKey(u => new {u.UserId, u.LocationId});
//modelBuilder.Entity().
//modelBuilder.Entity<Company>()
// .HasOne(c => c.Company)
// .WithOne(pc => pc.Company)
// .HasForeignKey(fk => fk.ParentId);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(
"Server=(localdb)\\mssqllocaldb;Database=GalleriesDB;Trusted_Connection=True;");
}
}
}
}
Примечание: закомментированный текст - моя попытка исправить эту проблему, но безрезультатная, так как я получаю синтаксические ошибки.