Code First CTP 5 を使用しています。親テーブルと子テーブルの間の設定はかなり単純です。
Create table testA (
id int not null identity(1,1),
stuff varchar(200),
primary key (id)
);
go
create table testB (
id int not null
foreign key references testA(id),
morestuff varchar(200),
primary key (id)
);
go
Code First を使用してこれらのテーブルを参照するには、次の構造を使用します。
namespace Test.Models
{
public class TestEntities : DbContext
{
public DbSet<testa> testa { get; set; }
public DbSet<testb> testb { get; set; }
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<testa>().ToTable("testa");
modelBuilder.Entity<testa>()
.Property(p => p.id)
.HasDatabaseGenerationOption(DatabaseGenerationOption.Identity);
modelBuilder.Entity<testb>().ToTable("testb");
}
}
public class testa
{
public int id { get; set; }
public String stuff { get; set; }
public virtual testb testb { get; set; }
}
public class testb
{
public int id { get; set; }
public string morestuff { get; set; }
public virtual testa testa { get; set; }
}
}
testa にレコードを追加しようとすると、「IDENTITY_INSERT が OFF に設定されている場合、テーブル 'testA' の ID 列に明示的な値を挿入できません。」というエラーが表示されます。
Ok。Id が ID 列であることを認識していないため、Code First に 1 を打ちます。これを修正できるので、CodeFirst に testa.id が ID であることを伝えます。
modelBuilder.Entity<testa>()
.Property(p => p.id)
.HasDatabaseGenerationOption(DatabaseGenerationOption.Identity);
それをもう一度実行すると、別のエラーが表示されます。では、この写真のどこが悪いのでしょうか?
私は何を間違っていますか、どうすれば修正できますか???