私のドメイン クラス:
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 の初心者であり、あなたの助けに本当に感謝しています. 前もって感謝します!