【发布时间】:2016-04-27 22:55:56
【问题描述】:
我的数据库中有一个服务表和一个 BodyAreas 表。它们通过多对多关系链接。在这里,我尝试从 CSV 加载服务,其中我也有相关的 BodyAreas。
var record = reader.GetRecord<ServiceModel>();
service.Name = record.Service;
service.Code = record.ID;
service.Description = record.Description;
service.Price = decimal.Parse(record.Price_Uninsured);
service.Specialties = new[]
{
context.Specialties.FirstOrDefault(b => b.Name == record.Category),
};
service.ServiceType = serviceType;
service.BodyAreas = new List<BodyArea>();
string[] items = record.Body_Areas.Split(new char[] { ',' });
foreach (var item in items)
{
BodyArea bA = context.BodyAreas.Single(x => x.Name == item);
if (bA != null)
{
service.BodyAreas.Add(bA);
}
}
var entry = context.Entry(service);
if (entry.State == EntityState.Unchanged)
entry.CurrentValues.SetValues(service);
else
context.Services.Add(service);
但是当我从包管理器控制台运行 update-database 命令时,我得到了这个错误:
InnerException = {"违反主键约束 'PK_dbo.ServiceBodyAreas'。无法在对象中插入重复键 'dbo.ServiceBodyAreas'。重复键值为 (1, 17)。\r\n 语句已终止。"}
【问题讨论】:
-
希望你的 Body_Areas 没有重复元素
-
非常感谢。我现在觉得自己很傻
标签: c# sql-server