Я только что установил новый пакет 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 ?