代码优先:可选的一对一关系

时间:2017-03-31 20:00:21

标签: c# entity-framework-5 fluent

我有两个实体模型,系列和夹具。系列可以具有夹具并且夹具可以具有系列。以下是两个实体的简化版本。

Series.cs

public class Series
{
    public int Id { get; set; }
    public int? FixtureId { get; set; }
    public virtual Fixture Fixture { get; set; }
}

Fixture.cs

public class Fixture
{
    public int Id { get; set; }
    public int? SeriesId { get; set; }
    public virtual Series Series { get; set; }
}

然后我的流利如下:

modelBuilder.Entity<Series>()
            .HasOptional(a => a.Fixture)
            .WithOptionalPrincipal(a => a.Series);

我不知道是否需要使用某些注释标记我的属性,或者我的流畅配置是否不正确。

使用此特定示例,当我尝试运行update-database -verbose

时,我收到以下错误

索引&#39; IX_Series_Id&#39;取决于列&#39; Series_Id&#39;。 ALTER TABLE DROP COLUMN Series_Id失败,因为一个或多个对象访问此列。

当前迁移代码:

    public override void Up()
    {
        DropIndex("dbo.Series", new[] { "FixtureId" });
        RenameColumn(table: "dbo.Fixture", name: "FixtureId", newName: "Series_Id");
        CreateIndex("dbo.Fixture", "Series_Id");
    }

    public override void Down()
    {
        DropIndex("dbo.Fixture", new[] { "Series_Id" });
        RenameColumn(table: "dbo.Fixture", name: "Series_Id", newName: "FixtureId");
        CreateIndex("dbo.Series", "FixtureId");
    }

0 个答案:

没有答案