Я пытаюсь использовать миграции для генерации базы данных EF, но при выполнении команды update-database
я получаю пару ошибок.
Ошибка 1
Failed executing DbCommand (7ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [Occupier] (
[OccupierId] int NOT NULL IDENTITY,
[Title] int NOT NULL,
[FirstName] nvarchar(32) NULL,
[LastName] nvarchar(32) NULL,
[Dob] datetime2 NOT NULL,
[Relationship] nvarchar(32) NULL,
CONSTRAINT [PK_Occupier] PRIMARY KEY ([OccupierId]),
CONSTRAINT [FK_Occupier_Property_OccupierId] FOREIGN KEY ([OccupierId]) REFERENCES [Property] ([PropertyId]) ON DELETE CASCADE
);
Ошибка 2
Нельзя создать каскадный внешний ключ 'FK_Occupier_Property_OccupierId', если ссылающийся столбец 'Occupier.OccupierId' является столбцом идентификаторов.Не удалось создать ограничение или индекс.См. Предыдущие ошибки.
Из того, что я вижу, мои таблицы настроены правильно, но, очевидно, чего-то не хватает, чего я не вижу.Я выложу код для таблиц ниже, и, надеюсь, кто-нибудь увидит, что мне не хватает.
Для ясности;SolicitorInstruction
имеет объект Property
, который может содержать число Occupiers
.
Я также не уверен в том, как работает [ForeignKey("string")]
.Это говорит "это внешний ключ к первичному ключу" строка "? Или" строка "является внешним ключом?
SolicitorInstruction
public class SolicitorInstruction
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SolicitorInstructionId { get; set; }
public InstructionTypes InstructionType { get; set; }
public int ApplicationId { get; set; }
public DateTime DateLogged { get; set; }
[ForeignKey("AdditionalInformationId")]
public AdditionalInformation AdditionalInformation { get; set; }
[ForeignKey("BorrowerBankId")]
public BorrowerBank BorrowerBank { get; set; }
[ForeignKey("BrokerId")]
public Broker Broker { get; set; }
[ForeignKey("PropertyId")]
public Property Property { get; set; }
[ForeignKey("SolicitorId")]
public Solicitor Solicitor { get; set; }
[ForeignKey("BorrowerId")]
public List<Borrower> Borrower { get; set; }
[ForeignKey("CurrentLenderId")]
public List<CurrentLender> CurrentLender { get; set; }
}
Свойство
[Table("Property")]
public partial class Property
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PropertyId { get; set; }
[StringLength(8)]
public string ReferenceNumber { get; set; }
[StringLength(4)]
public string CaseOwner { get; set; }
public int AmountBorrowed { get; set; }
[ForeignKey("SecurityAddressId")]
public Address Security { get; set; }
[ForeignKey("CorrespondenceAddressId")]
public Address Correspondence { get; set; }
[ForeignKey("OccupierId")]
public List<Occupier> Occupier { get; set; }
public TenureTypes Tenure { get; set; }
public JurisdictionTypes Jurisdiction { get; set; }
public FunderTypes Funder { get; set; }
public Property()
{
Occupier = new List<Occupier>();
}
}
Занимайте
[Table("Occupier")]
public partial class Occupier
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OccupierId { get; set; }
public Honorifics Title { get; set; }
[StringLength(32)]
public string FirstName { get; set; }
[StringLength(32)]
public string LastName { get; set; }
public DateTime Dob { get; set; }
[StringLength(32)]
public string Relationship { get; set; }
}