私の ASP.NET Core 1.0、MVC6、EF7 Web アプリケーションでは、新しい関連テーブル (および対応するモデル) を追加する移行を追加しています。次のモデルのスナップショットがあります。
[DbContext(typeof(ApplicationDbContext))]
partial class ApplicationDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
modelBuilder
.HasAnnotation("ProductVersion", "7.0.0-rc1-16348")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("Salesboost.Models.ApplicationUser", b =>
{
b.Property<string>("Id");
b.Property<int?>("TeamId");
b.HasKey("Id");
// -- <unrelated fields snipped> --
});
// -- <snipped> --
modelBuilder.Entity("Team", b =>
{
b.Property<int>("Id").ValueGeneratedOnAdd();
b.Property<string>("Name").IsRequired();
b.Property<string>("ManagerId").IsRequired();
b.HasKey("Id");
});
modelBuilder.Entity("Team", b =>
{
b.HasOne("ApplicationUser", "Manager")
.WithOne("TeamManaging")
.HasForeignKey("ManagerId");
});
}
}
Team.cs:
public class Team
{
public int Id { get; set; }
public string Name { get; set; }
public string ManagerId { get; set; }
public virtual ApplicationUser Manager { get; set; }
public virtual ICollection<ApplicationUser> Members { get; set; }
}
アプリケーション ユーザー:
public class ApplicationUser : Microsoft.AspNet.Identity.EntityFramework.IdentityUser
{
public int? TeamId { get; set; }
public virtual Team Team { get; set; }
public virtual Team TeamManaging { get; set; }
}
データベースを更新しようとすると、dnx で次のエラーが表示されます。
エンティティ タイプがシャドウ状態で定義されており、ナビゲーション プロパティをシャドウ状態に追加できないため、ナビゲーション プロパティ 'マネージャー' をエンティティ タイプ 'チーム' に追加できません。
エンティティ タイプが「シャドウ状態」にあるとはどういう意味ですか? これを回避する方法はありますか?