【发布时间】:2014-08-10 22:49:40
【问题描述】:
我创建了一些模型,添加了迁移,然后进行了更新数据库操作,但在我上次更新数据库操作时,我收到了错误消息:
序列包含多个元素
您可以在下面找到我的迁移配置:
context.Categories.AddOrUpdate(p => p.CategoryName,
new Category
{
CategoryName = "Sport"
},
new Category
{
CategoryName = "Music"
}
);
context.Subcategories.AddOrUpdate(p => p.SubcategoryName,
new Subcategory
{
SubcategoryName = "Football"
},
new Subcategory
{
SubcategoryName = "Basketball"
},
new Subcategory
{
SubcategoryName = "Piano"
},
new Subcategory
{
SubcategoryName = "Violin"
}
);
context.Services.AddOrUpdate(p => p.ServiceType,
new Service
{
ServiceType = "Football player",
Category = { CategoryName = "Sport" },
Subcategory = { SubcategoryName = "Football" }
},
new Service
{
ServiceType = "Piano lessons",
Category = { CategoryName = "Music" },
Subcategory = { SubcategoryName = "Piano" }
}
);
当我添加新服务时出现问题。我已经有了类别和子类别,如果我喜欢Category = new Category { CategoryName = "Music" },那么它可以工作,但我在我的数据库中获得了两次音乐条目(对于这个例子)。我想使用已经添加的类别和子类别。您还可以在下面找到我的模型定义。
public class Category
{
[Key]
public int CategoryID { get; set; }
public string CategoryName { get; set; }
}
// Subcategory is defined the same way...
public class Service
{
public int ServiceID { get; set; }
public string ServiceType { get; set; }
public virtual Category Category { get; set; }
public virtual Subcategory Subcategory { get; set; }
}
知道怎么解决吗?
【问题讨论】:
-
@YuliamChandra 这不是答案。
-
为什么不使用
p => p.CategoryID和p => p.SubcategoryID之类的东西? -
数据库中可能存在重复的
Piano lessons,AddOrUpdate基于重复条目ServiceType将不起作用,因为您使用p => p.ServiceType -
@YuliamChandra 如果我将它们更改为 p.CategoryID 和 p.SubcategoryID,我会在更新数据库时收到另一条错误消息:对象引用未设置为对象的实例。
标签: c# entity-framework entity-framework-migrations