- ファイアーバード 2.5
- エンティティ フレームワーク 5
- FirebirdClientDLL 3.0.0.0
こんにちは、エンティティ フレームワーク (Code First) を使用して従来のデータベースにアクセスしようとしています。データベースが外部キーを使用しないという問題が発生しました...
public class CUSTOMERS
{
public int CUSTOMERID { get; set; }
public string NAME{ get; set; }
}
public class INVOICES
{
public int INVOICEID{ get; set; }
public int CUSTOMERID{ get; set; }
public virtual CUSTOMERS CUSTOMERS { get; set; }
}
public class INVOICEContext : DbContext
{
public DbSet<CUSTOMERS> CUSTOMERS{ get; set; }
public DbSet<INVOICES> INVOICES{ get; set; }
public INVOICEContext(DbConnection connectionString) : base(connectionString, false)
{
Database.SetInitializer<INVOICEContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
/*modelBuilder.Entity<INVOICES>().HasRequired(b => b.CUSTOMERS)
.WithMany()
.Map(p => p.MapKey("INVOICEID"));*/ //Doesn't work because INVOICEID is defined
modelBuilder.Entity<INVOICES>().HasKey(a => new { a.INVOICEID, a.CUSTOMERID});
modelBuilder.Entity<CUSTOMERS>().HasKey(a => new { a.CUSTOMERID });
base.OnModelCreating(modelBuilder);
}
}
CUSTOMERID
通常、クラスからプロパティを削除できますINVOICES
が、この場合は主キーの一部です...
の使用を提案する多くのスレッドを見つけましたが、Entity Framework 5 (または 4.1) から削除されたIsIndependent
ようです。
私の拙い英語を理解していただければ幸いです。また、私が間違っていることのヒントを教えていただければ幸いです ^^