Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Sql server EF迁移正在为聚合PK生成第二个索引_Sql Server_Entity Framework_Entity Framework 6 - Fatal编程技术网

Sql server EF迁移正在为聚合PK生成第二个索引

Sql server EF迁移正在为聚合PK生成第二个索引,sql-server,entity-framework,entity-framework-6,Sql Server,Entity Framework,Entity Framework 6,我正试图为我的项目创建一个新的迁移,但我遇到了一个尴尬的局面。。。我有我的聚合根实体: public class Classroom : Entity, IAggregateRoot { // PK public int ClassroomId { get; set; } // .... public virtual ClassroomStreaming Streaming { get; set; } } 及合计: public class Classroom

我正试图为我的项目创建一个新的迁移,但我遇到了一个尴尬的局面。。。我有我的聚合根实体:

public class Classroom : Entity, IAggregateRoot
{
    // PK
    public int ClassroomId { get; set; }

    // ....
    public virtual ClassroomStreaming Streaming { get; set; }
}
及合计:

public class ClassroomStreaming : Entity
{
    // PK
    public int ClassroomId { get; set; }
    public virtual Classroom Classroom { get; set; }

    // Fields
    public string EmbedCode { get; set; }

    // ...
}
这些映射是:

public class ClassroomMap : EntityTypeConfiguration<Classroom>
{
    public ClassroomMap()
    {
        this.HasKey(t => t.ClassroomId);
        this.ToTable("Classroom");
        // ....

        // One to One
        this.HasOptional(t => t.Streaming)
            .WithRequired(p => p.Classroom);
    }
}
这是正常的行为吗?看看它在SQL Server中的表现:


看起来您在两个EntityTypeConfiguration类中双重映射了您的关系。我认为你只需要在一个方向上定义关系

文档说明,对于一对零或一关系,请使用.HasOptional.WithRequired定义它,就像您在ClassroomMap中所做的那样。您应该能够删除ClassroomStreamingMap类中的.HasRequired.WithOptional

public class ClassroomStreamingMap: EntityTypeConfiguration<ClassroomStreaming>
{
    public ClassroomStreamingMap()
    {
        // Primary Key
        this.HasKey(t => new { t.ClassroomId });

        // Table & Column Mappings
        this.ToTable("ClassroomStreaming");

        this.Property(t => t.ClassroomId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        // Relationships
        this.HasRequired(t => t.Classroom)
            .WithOptional(p => p.Streaming)
            .WillCascadeOnDelete(true);
    }
}
public override void Up()
{
    CreateTable(
        "dbo.ClassroomStreaming",
        c => new
            {
                ClassroomId = c.Int(nullable: false),
                // ....
            })
        .PrimaryKey(t => t.ClassroomId)
        .ForeignKey("dbo.Classroom", t => t.ClassroomId, cascadeDelete: true)
        .Index(t => t.ClassroomId);
}