0
我在实体框架中使用实体框架作为我的项目中的ORM。假设我使用Code-First模式,并且我有两个模型。如实体框架和重复
internal class First
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
public string Name { get; set; }
}
internal class Second
{
public int Id { get; set; }
public First ForeignKeyEntity { get; set; }
// other members
}
这里是代码数据库填充:
List<Second> res = GetData();
using (var ctx = new StatisticContext())
{
foreach (var item in res)
{
ctx.Seconds.Add(item);
}
ctx.SaveChanges();
}
正如你可以看到它的成员ForeignKeyEntity
类的每个实例Second
具有First
类的实例。显然First
的一些实例可以在res中复制。当我运行此代码,我得到DbUpdateException在ctx.SaveChanges()
与具有以下消息的内部异常:
Violation of PRIMARY KEY constraint 'PK_dbo.First'.
Cannot insert duplicate key in object 'dbo.First'.
The duplicate key value is (29459). The statement has been terminated.
我不能插入重复的行,但我不想重复插入,我想插入一行只有当它不存在。如何解决这个问题呢?只有在不存在的情况下如何插入外键对象?
'First:Second'是什么关系? – Sampath
@Sampath Second的每个实例都有First的实例。至于数据库,我有两个表:第一个和第二个。第二个表中有Id的外键第一个 – Pupkin
是否意味着'1:1'? – Sampath