Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架代码一对一可选_C#_Entity Framework - Fatal编程技术网

C# 实体框架代码一对一可选

C# 实体框架代码一对一可选,c#,entity-framework,C#,Entity Framework,我与以下对象有一对一的关系: [DataContract(IsReference = true)] public class Ecwid { [Key, ForeignKey("Project")] [DataMember] public Guid ProjectId { get; set; } [DataMember] public string EcwidShopID { get; set; } public virtual Project

我与以下对象有一对一的关系:

[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; }
}
在这方面,我有:

    modelBuilder.Entity<Ecwid>().HasKey(p => p.ProjectId);
    modelBuilder.Entity<Project>().HasOptional(p => p.Ecwid).WithRequired(p => p.Project);
modelBuilder.Entity().HasKey(p=>p.ProjectId);
modelBuilder.Entity().HasOptional(p=>p.Ecwid).WithRequired(p=>p.Project);

问题:当我创建项目时,EntityFramework在数据库中创建Ecwid对象,但我不需要这个对象。在DbContext中,我添加了“HasOptional”,为什么EF会为我创建Ecwid对象?

HasOptional
意味着EF必须创建新的列,该列可以为空。如果不希望EF自动在数据库中创建新列,则只需将此关系映射到现有列:

modelBuilder.Entity<Project>()
            .HasOptional(p => p.Ecwid)
            .WithRequired(p => p.Project)
            .Map(x => x.MapKey("Ecwid_ID"));

Use I get以下错误:“验证它是否未被明确地从模型中排除,并且它是有效的导航属性”。我不能在同一个属性上使用DataMember和NotMapping。@AndreyMykhaylov很乐意提供帮助。
modelBuilder.Entity<Ecwid>()
            .HasRequired(p => p.Project)
            .WithOptional(p => p.Ecwid);