实体框架-在种子方法中将现有实体添加到一对一关系

帕拉坎

我的网域类别:

public class Address
{
    [Key]
    public virtual string AddressId { get; set; }

    public virtual Site Site { get; set; }
}

public class Site
{
    [Key]
    public virtual int SiteId { get; set; }

    public virtual Address Address { get; set; }
}

使用Fluent API进行映射:

public class SiteMappings : EntityTypeConfiguration<Site>
{
    public SiteMappings()
    {
        HasRequired(s => s.Address)
        .WithOptional(a => a.Site)
        .Map(s => s.MapKey("AddressId"))
        .WillCascadeOnDelete(false);
    }
}

播种方法:

var addresses = new List<Address>
{
    new Address { AddressId = "1" }
};
addresses.ForEach(s => context.Addresses.AddOrUpdate(p => p.AddressId, s));

var sites = new List<Site>
{
    new Site { SiteId = 1, Address = addresses.Single(s => s.AddressId.Equals("1"))}
};
sites.ForEach(s => context.Sites.AddOrUpdate(p => p.SiteId, s));

错误:

Violation of PRIMARY KEY constraint 'PK_dbo.Addresses'. Cannot insert duplicate key in object 'dbo.Addresses'. The duplicate key value is (1)

看来是当我尝试添加新的“站点”时,也插入了新的“地址”。如何避免这种情况?我刚才添加了如何在DBcontext中插入现有的“地址”。我是Entity Framework的新手,非常感谢您的帮助。提前致谢!

帕拉坎

通过插入当前上下文管理的“地址”,我能够解决此问题。

new Site { SiteId = 1, Address = context.Addresses.FirstOrDefault(a => a.AddressId.Equals("1"))}

下面的代码将利用由当前上下文管理的现有“地址”,而不是尝试插入新的“地址”。

context.Addresses.FirstOrDefault(a => a.AddressId.Equals("1"))}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一对零或一对一关系的实体框架(EF)代码优先级联删除

来自分类Dev

实体框架首先使用代码一对一关系。怎么样?

来自分类Dev

实体框架一对一关系,其中一个为可选抛出错误

来自分类Dev

实体框架:一对多关系

来自分类Dev

实体框架两端可选的一对一关系

来自分类Dev

实体框架4.2一对多关系

来自分类Dev

实体框架级联一对一或零关系

来自分类Dev

实体框架代码优先一对一关系

来自分类Dev

实体框架与ASP.NET Boilerplate的一对一关系

来自分类Dev

使用实体框架将元素添加到另一个现有实体

来自分类Dev

实体框架代码首先在复杂实体之间建立一对一关系

来自分类Dev

实体框架核心一对一关系在SQL Server中生成一对多

来自分类Dev

实体框架一对多关系错误

来自分类Dev

如何删除一对一关系中的实体?

来自分类Dev

实体框架中的一对一或零关系

来自分类Dev

实体框架-在种子方法中将现有实体添加到一对一关系

来自分类Dev

实体框架6:具有继承关系的一对一关系

来自分类Dev

与实体框架一对一的建立关系

来自分类Dev

实体框架级联一对一或零关系

来自分类Dev

无法在实体之间建立一对一关系

来自分类Dev

C#实体框架:可选的一对一关系

来自分类Dev

实体框架与ASP.NET Boilerplate的一对一关系

来自分类Dev

一对一实体框架关系

来自分类Dev

实现实体框架一对一关系

来自分类Dev

实体框架:一对一关系,能够双向导航

来自分类Dev

简化实体框架 6 一对一关系的语法

来自分类Dev

实体框架以一对一关系添加新记录,而对象具有 ID

来自分类Dev

一对一关系实体框架

来自分类Dev

实体框架中的一对一关系插入

Related 相关文章

热门标签

归档