我想要完成的是我试图通过使用迁移来获取数据库并获得错误b / c其中一个表/类有一个外键,当我尝试种子数据时,我保持得到一个错误。这是第一次这样做,所以非常感谢任何帮助。
以下是我的课程:
public class SelectOption
{
[Key]
public int Id { get; set; }
public SelectOptionType OptionTypeId { get; set; }
[StringLength(100, ErrorMessage = "UserName length exceeded.")]
public string OptionValue { get; set; }
}
public class SelectOptionType
{
[Key]
public int Id { get; set; }
[StringLength(100, ErrorMessage = "Name length exceeded.")]
public string Name { get; set; }
}
这是我的种子方法:
protected override void Seed(TestApp.Infrastructure.Context context)
{
context.SelectOptionTypes.AddOrUpdate(d => d.Name,
new SelectOptionType() { Name = "Cleaning/Housekeeping"},
new SelectOptionType() { Name = "Doors"},
new SelectOptionType() { Name = "Electrical"},
new SelectOptionType() { Name = "Fire and Safety"},
new SelectOptionType() { Name = "Furniture"},
new SelectOptionType() { Name = "General Repairs"},
new SelectOptionType() { Name = "Heating/Air Conditioning"},
new SelectOptionType() { Name = "Key/Card Access"},
new SelectOptionType() { Name = "Light Bulbs/Lighting"},
new SelectOptionType() { Name = "Plumbering"},
new SelectOptionType() { Name = "University Applicances"},
new SelectOptionType() { Name = "Pest Control"}
);
context.SelectOptions.AddOrUpdate(d => d.OptionTypeId,
new SelectOption() { OptionTypeId = new SelectOptionType() { Name = "Cleaning/Housekeeping" }, OptionValue = "Carpet is wet" }
);
}
错误我是包管理器控制台中的接收者: 无法创建“TestApplication.Model.SelectOptionType”类型的常量值。在此上下文中仅支持原始类型或枚举类型。
答案 0 :(得分:0)
您当前的问题是,您无法使用类似引用属性的内容作为AddOrUpdate
的第一个参数。它必须传递一个标量属性(字符串,整数等)。如果您有一个实际的id属性来表示关系,那么OptionTypeId
的类型为int
,然后您的引用属性就像OptionType
,那么您可以使用OptionTypeId
}作为第一个参数的属性。