EF 4.1 портит ситуацию. Изменилась ли стратегия именования FK?

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

9
задан Sergi Papaseit 17 March 2011 в 09:56
поделиться