I have ApplicationForm class to store user's information who apply to the website. ApplicationFormAnswer is for storing custom fields answers in each application form.
public class ApplicationFormAnswer
{
public Guid Id { get; set; }
public string FieldId { get; set; }
public ApplicationCustomFieldType FieldType { get; set; }
public string Name { get; set; }
public string Answer { get; set; }
public virtual ApplicationForm ApplicationForm { get; set; }
public Guid ApplicationFormId { get; set; }
}
and in ApplicationForm class
public class ApplicationForm
{
public Guid Id { get; set; }
.....
....
public virtual ICollection<ApplicationFormAnswer> ApplicationFormAnswers { get; set; }
}
When I try to make a migration it s giving me this error:
There are no primary or candidate keys in the referenced table 'dbo.ApplicationForms' that match the referencing column list in the foreign key 'FK_dbo.ApplicationFormAnswers_dbo.ApplicationForms_ApplicationFormId'. Could not create constraint or index. See previous errors.
EDIT:
when I apply -verbose I see that sql query creating:
CREATE TABLE [dbo].[ApplicationFormAnswers] (
[ApplicationFormId] [uniqueidentifier] NOT NULL,
[Id] [uniqueidentifier] NOT NULL,
[FieldId] [nvarchar](max),
[FieldType] [int] NOT NULL,
[Name] [nvarchar](max),
[Answer] [nvarchar](max),
[ApplicationFormCustomField_FieldId] [nvarchar](max),
[ApplicationFormCustomField_Order] [int] NOT NULL,
[ApplicationFormCustomField_Name] [nvarchar](max),
[ApplicationFormCustomField_FieldType] [int] NOT NULL,
[ApplicationFormCustomField_IsRequired] [bit] NOT NULL,
[ApplicationFormCustomField_IsIncluded] [bit] NOT NULL,
[ApplicationFormCustomField_CanBeDeleted] [bit] NOT NULL,
[ApplicationFormCustomField_IsDeleted] [bit] NOT NULL,
CONSTRAINT [PK_dbo.ApplicationFormAnswers] PRIMARY KEY ([ApplicationFormId])
)
CREATE INDEX [IX_Id] ON [dbo].[ApplicationFormAnswers]([Id])
ALTER TABLE [dbo].[ApplicationFormAnswers] ADD CONSTRAINT [FK_dbo.ApplicationFormAnswers_dbo.ApplicationForms_Id] FOREIGN KEY ([Id]) REFERENCES [dbo].[ApplicationForms] ([Id]) ON DELETE CASCADE
I see that it making ApplicationFormId as primary key but primary key should be Id. I tried to put [Key] above Id but it still didn't work.