【发布时间】:2018-12-25 00:04:48
【问题描述】:
我有 ApplicationForm 类来存储申请网站的用户信息。 ApplicationFormAnswer 用于在每个申请表中存储自定义字段答案。
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; }
}
在 ApplicationForm 类中
public class ApplicationForm
{
public Guid Id { get; set; }
.....
....
public virtual ICollection<ApplicationFormAnswer> ApplicationFormAnswers { get; set; }
}
当我尝试进行迁移时,它给了我这个错误:
引用表“dbo.ApplicationForms”中没有与外键“FK_dbo.ApplicationFormAnswers_dbo.ApplicationForms_ApplicationFormId”中的引用列列表匹配的主键或候选键。 无法创建约束或索引。查看以前的错误。
编辑:
当我应用 -verbose 时,我看到 sql 查询正在创建:
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
我看到它使 ApplicationFormId 作为主键,但主键应该是 Id。我尝试将 [Key] 放在 Id 上方,但仍然无效。
【问题讨论】:
-
您需要在您的属性 ApplicationFormId 上的类中添加 [Key]
-
@PixelDev 我试过了,但报同样的错误
-
在
ApplicationForm.Id和ApplicationFormAnswer.ApplicationFormId上添加属性[Key],如果有错误,仍然会从DbSetModel为ApplicationForm发布modelbuilder -
@bthn 请检查此链接stackoverflow.com/questions/17879735/…
标签: c# sql asp.net-mvc entity-framework code-first