Я получаю эту ошибкуВводя ограничение внешнего ключа может вызвать циклы или несколько путей каскадных
Вводя FOREIGN KEY ограничения «FK_dbo.Regions_dbo.Countries_CountryId» на стол «Регионы» может привести к циклов или несколько путей каскадных , Указать DELETE NO ACTION или ON ОБНОВИТЬ НЕТ ДЕЙСТВИЙ или изменить другие ограничения FOREIGN KEY. Не удалось создать ограничение. См. Предыдущие ошибки.
Мне интересно, это означает, что мой проект базы данных плох? Я читал, что вы выключаете каскады или что-то в этом роде, но я просто не уверен, что это избавит проблему от ковра.
Я просто позволяю EF генерировать мои таблицы через мой класс домена (на данный момент я не использую никаких аннотаций или свободного отображения данных).
public class Country
{
public Country()
{
this.Stores = new List<Store>();
this.Regions = new List<Region>();
Id = GuidCombGenerator.GenerateComb();
}
public Guid Id { get; private set; }
private string name;
public string Name
{
get { return name; }
set
{
name = value.Trim();
}
}
private string code;
public string Code
{
get { return code; }
set
{
code = value.Trim();
}
}
public virtual ICollection<Store> Stores { get; set; }
public virtual ICollection<Region> Regions { get; set; }
}
public class City
{
public City()
{
this.Stores = new List<Store>();
Id = GuidCombGenerator.GenerateComb();
}
public Guid Id { get; private set; }
private string name;
public string Name
{
get { return name; }
set
{
name = value.Trim();
}
}
public Guid RegionId { get; set; }
public virtual Region Region { get; set; }
public virtual ICollection<Store> Stores { get; set; }
}
public class Region
{
public Region()
{
this.Cities = new List<City>();
this.Stores = new List<Store>();
Id = GuidCombGenerator.GenerateComb();
}
public Guid Id { get; private set; }
private string state;
public string State
{
get { return state; }
set
{
state = value.Trim();
}
}
public Guid CountryId { get; set; }
public virtual ICollection<City> Cities { get; set; }
public virtual Country Country { get; set; }
public virtual ICollection<Store> Stores { get; set; }
}
public class Store
{
public Store()
{
Id = GuidCombGenerator.GenerateComb();
Users = new List<User>();
}
public Guid Id { get; private set; }
public Guid CountryId { get; set; }
public Guid CityId { get; set; }
public Guid RegionId { get; set; }
public virtual City City { get; set; }
public virtual Country Country { get; set; }
public virtual Region Region { get; set; }
public virtual ICollection<User> Users { get; set; }
}
Не может быть из-за магазинов?
Может ли вы показать нам таблицу, связанную, каковы их структура, а самое главное: как Между ними установлены ограничения FK? Итак, вы хотели создать каскадное удаление между регионами и странами, чтобы, если страна удалена, все ее регионы удалены? Звучит разумно - вопрос в том, почему это вызывает цикл?Какие еще ограничения FK с каскадным удалением у вас уже есть? –
Хорошо, я обновил его, чтобы показать эти области, у меня еще нет таблиц, поскольку я делаю код первым. – chobo2
К сожалению, вы не показываете нам класс 'Store' .... и я не вижу никакого кода, который определяет каскадные удаления, либо ... –