[英]Entity Framework code first one to one optional
I have relation one to one with following objects: 我与以下对象具有一对一的关系:
[DataContract(IsReference = true)]
public class Ecwid
{
[Key, ForeignKey("Project")]
[DataMember]
public Guid ProjectId { get; set; }
[DataMember]
public string EcwidShopID { get; set; }
public virtual Project Project { get; set; }
}
[DataContract]
public class Project : AuditInfoComplete
{
[Key]
[DataMember]
public Guid ProjectId { get; set; }
[DataMember]
public virtual Ecwid Ecwid { get; set; }
}
In DbContext I have: 在DbContext中,我有:
modelBuilder.Entity<Ecwid>().HasKey(p => p.ProjectId);
modelBuilder.Entity<Project>().HasOptional(p => p.Ecwid).WithRequired(p => p.Project);
Problem: when I create Project, Entity Framework creates Ecwid object in database to, but I don't need this object. 问题:创建项目时,实体框架在数据库中创建Ecwid对象,但是我不需要此对象。 In DbContext I added "HasOptional", why EF creates Ecwid object for me?
在DbContext中,我添加了“ HasOptional”,为什么EF为我创建了Ecwid对象?
HasOptional
means that EF must create new column which is nullable . HasOptional
表示EF必须创建可为空的新列。 IF you don't want EF automatically creates a new column in database, then just map this realtionship to existing column: 如果您不希望EF在数据库中自动创建新列,则只需将此房地产映射到现有列即可:
modelBuilder.Entity<Project>()
.HasOptional(p => p.Ecwid)
.WithRequired(p => p.Project)
.Map(x => x.MapKey("Ecwid_ID"));
Or, if your FK column in Ecwid
table, then change your mapping as: 或者,如果您在
Ecwid
表中的FK列,则将映射更改为:
modelBuilder.Entity<Ecwid>()
.HasRequired(p => p.Project)
.WithOptional(p => p.Ecwid);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.