Платформа объекта CTP4 - отображения Внешнего ключа через схемы не работает правильно. Ошибка?

У меня есть проблема с таблицами, которые имеют внешние ключи к другим таблицам в другой схеме.

Например, TableA в SchemaA имеет внешний ключ к TableB в SchemaB. Когда CTP4 создает базу данных, вместо того, чтобы создать внешний ключ от TA до ТБ, это создает третью таблицу "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.. из вышеупомянутого кода это составляет таблицы правильно.

Я пытался искать решение, но ничего не мог найти. Какая-либо идея, что я делаю неправильно, или действительно ли это - ошибка?

1
задан mjezzi 30 July 2010 в 15:00
поделиться

2 ответа

Оказалось, что это ошибка в CTP4, опубликованный вами код должен работать так, как вы ожидали. На данный момент временным решением является явное отображение столбцов в таблице A:

builder.Entity<TableA>().MapSingleType(a => new { a.ID, tableBID = a.TableB.ID })
    .ToTable(new StoreTableName("TableA", "SchemaA"));

~ Rowan

2
ответ дан 2 September 2019 в 22:36
поделиться

Можете ли вы попробовать следующее:

builder.Entity<TableA>().HasKey(t => t.ID);
builder.Entity<TableA>().HasRequired(tA => tA.TableB);
builder.Entity<TableB>().HasKey(t => t.ID);
0
ответ дан 2 September 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: