Я только что установил новый пакет NuGet Entity Framework 4.1, тем самым заменив пакет EFCodeFirst
в соответствии с инструкциями NuGet и этой статьи Скотта Хансельмана .
Теперь представьте себе следующую модель:
public class User
{
[Key]
public string UserName { get; set; }
// whatever
}
public class UserThing
{
public int ID { get; set; }
public virtual User User { get; set; }
// whatever
}
Последний выпуск EFCodeFirst сгенерировал внешний ключ в таблице UserThing
с именем UserUserName
.
После установки и запуска нового выпуска я получаю следующую ошибку:
Invalid column name 'User_UserName'
Что, конечно, означает, что в новом выпуске другая стратегия именования FK. Это согласуется со всеми другими таблицами и столбцами: независимо от того, какой FK EFCodeFirst с именем AnyOldForeignKeyID
EF 4.1 хочет вызвать AnyOldForeignKey_ID
(обратите внимание на подчеркивание).
Я не возражаю называть FK подчеркиванием, но в этом случае это означает, что необходимо либо излишне выбросить базу данных и воссоздать ее, либо излишне переименовать все FK.
Кто-нибудь знает, почему изменилось соглашение об именах FK и можно ли его настроить без использования Fluent API ?