EF4 Code First с существующей базой данных и один к одному/один ко многим в одном и том же типе

После бесчисленных часов мне, наконец, удалось получить плавные настройки API, чтобы сопоставить нашу сложную существующую базу данных SQL с классами POCO. Есть одна вещь, с которой я не работаю, и мне интересно, может ли она не поддерживаться.

Сила класса имеет:

List<Transaction> PowerTransactions;
Transaction LastPowerTransaction;
int PowerTransactionId;

Транзакции - это один ко многим, где в таблице транзакций есть FK, указывающий на Power.PowerID, который отлично работает.

У Power есть столбцы PowerTransactionId и FK, указывающие на TransactionId в таблице транзакций.

Я установил свободный API:

Power имеет необязательную последнюю транзакцию с требуемой мощностью

HasOptional(x => x.LastPowerTransaction).WithRequired(x => x.PowerLastPowerTransaction).Map(x =>     x.MapKey("PowerTransactionId"));

Powers TransactionId равен 123, а PowerID равен 1, при выборе Power.LastPowertransaction я получаю транзакцию с идентификатором 1, а не 123.

Поскольку многие ко многим выполняют выбор .. из PowerTransaction, где PowerID=1, One to One делает то же самое вместо выбора .. из PowerTransaction, где PowerID=123.

Что мне здесь не хватает?


person user1029883    schedule 07.11.2012    source источник
comment
Почему вы просто не воспользовались бесплатными инструментами Entity Framework Power Tools для обратного проектирования базы данных? Вы бы сделали это за 2 минуты.   -  person Erik Funkenbusch    schedule 08.11.2012


Ответы (1)


Комментарий Mystere Man не был настоящим ответом, но использование упомянутого инструмента привело к правильному ответу. Код EF4 сначала устанавливает отношения один к одному только с общими первичными ключами. Reveres Engineering показала это, поскольку НИКТО один к одному не был создан. Поэтому мое беглое отображение было неправильным. Сначала это ограничение в коде EF4, когда нужно обойти использование один к одному как «поддельный» один ко многим, если существующая база данных не использует общие первичные ключи.

person user1029883    schedule 09.11.2012