我对具有不同模式中其他表的外键的表有问题。
例如,SchemaA 中的 TableA 对 SchemaB 中的 TableB 有一个外键。当 CTP4 创建数据库时,它没有创建从 TA 到 TB 的外键,而是创建了第三个表“TableA_TableB”,其中包含 TableA_ID 和 TableB_ID 列,就好像它认为应该是多对多关系一样。
public class TableA
{
public int ID { get; set; }
public TableB TableB { get; set; }
}
public class TableB
{
public int ID { get; set; }
}
var builder = new ModelBuilder();
// this works fine - creates only two tables with the correct foreign key
// builder.Entity<TableA>();
// builder.Entity<TableB>();
// this doesn't work - creates a third many-to-many table
builder.Entity<TableA>().MapSingleType()
.ToTable( new StoreTableName( "TableA", "SchemaA" ) );
builder.Entity<TableB>().MapSingleType()
.ToTable( new StoreTableName( "TableB", "SchemaB" ) );
var model = builder.CreateModel();
var store = new DbContext( "database", model );
store.Database.DeleteIfExists();
store.Database.Create();
如果我从上面的代码中删除 .ToTable.. ,它会正确创建表。
我试图寻找解决方案,但找不到任何东西。知道我做错了什么,还是这是一个错误?