Тема: Помилка циклічності моделі БД
Ось шматочок з моєї БД, створеної по принципу code first:
Є абстрактний клас Client (саме його таблиця створюється в БД):
public abstract class Client
{
public int ClientId { get; set; }
[Required(ErrorMessage = "Name is required for Client")]
public string ClientName { get; set; } // ім*я
[Required(ErrorMessage = "Phone number is required for Client")]
public string ClientPhoneNumber { get; set; } // телефон
public string Email { get; set; } // мейл
public string Comment { get; set; } // примітка
[Required(ErrorMessage = "Client should be enabled or disabled")]
public bool IsDisabled { get; set; }
}
Від нього унаслідуються 3 класи:
public class PrivatePerson : Client // дядя Вася
{
public string PrivatePersonSurname { get; set; }
}
public class Firm : Client // звичайна фірма
{
[Required(ErrorMessage = "Ownership is required for Firm")]
public virtual Ownership Ownership { get; set; } // форма власності
[Required(ErrorMessage = "Client address is required for Firm")]
public virtual ClientAddress FirmAddress { get; set; } // адреса установи
}
і аналогічна фірмі Рекламна агенція
public class AdvertisingAgency : Client // Рекламне агенство
{
[Required(ErrorMessage = "Ownership is required for Advertising agency")]
public virtual Ownership Ownership { get; set; } // форма власності
[Required(ErrorMessage = "Client address is required for Advertising agency")]
public virtual ClientAddress AdvertisingAgencyAddress { get; set; } // адреса установи
}
Ось таблиця Адреси клієнта:
public class ClientAddress
{
public int ClientAddressId { get; set; }
[Required(ErrorMessage = "Postal code is required for Client Address")]
public int PostalCode { get; set; } // поштовий індекс
[Required(ErrorMessage = "City is required for Client Address")]
public virtual City ClientCity { get; set; } // місто
public int POBox { get; set; } //абонентська скринька
public virtual Street ClientStreet { get; set; } // вулиця
public string StreetNumber { get; set; } // номер вулиці
public int Appartment { get; set; } // квартира, офіс
public string ClientAddressComment { get; set; } // примітка
}
Контекст:
public virtual DbSet<Client> Clients { get; set; }
public virtual DbSet<ClientAddress> ClientAddresses { get; set; }
Так от. Коли я намагаюся створити БД, мені видає ось такий Exception:
System.Data.SqlClient.SqlException
HResult=0x80131904
Message=Introducing FOREIGN KEY constraint 'FK_dbo.Clients_dbo.ClientAddresses_FirmAddress_ClientAddressId' on table 'Clients' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.
Хтосб може допомогти розібратися?