Entity Framework 4 CTP 4 Code First: как работать с нетрадиционными именами первичных и внешних ключей - PullRequest
2 голосов
/ 25 августа 2010

Есть ли способ в Entity Framework 4 (с использованием CTP4 и Code First, если это имеет значение) изменить соглашения, используемые для автоматической идентификации первичных и внешних ключей? Я пытаюсь использовать EF с устаревшей базой данных, которая использует префикс «pk / fk» вместо суффикса «id» для маркировки ключей. Кроме того, весьма часто иметь несколько внешних ключей для таблицы адресов, например, с именами "fkAddressHome" и "fkAddressWork".

Я бы предпочел метод для систематического изменения этого поведения, чтобы мне не приходилось указывать эти изменения для каждой таблицы. Я рассмотрел возможность переопределения имен столбцов в методе OnModelCreating, но было разочаровывающе видеть, что если вы добавляете один столбец таким образом, то вам нужно добавить их все. И это нарушило мои СУХИЕ чувства.

Однако, любое решение будет оценено. EF4, и особенно улучшения Code First в CTP4, действительно очень хороши. Я с нетерпением жду встречи с тем, что еще входит в следующую версию EF. Спасибо за помощь.

Обновление

Мне удалось отобразить отношения, добавив в метод OnModelCreating следующее:

modelBuilder.Entity<User>()
    .HasRequired<Address>(p => p.Address)
    .HasConstraint((p, u) => p.fkAddressHome == u.pkAddress);

Я не уверен, является ли это наиболее элегантным подходом, или это в конечном итоге вызовет у меня какие-либо проблемы, но пока это работает.

1 Ответ

1 голос
/ 26 сентября 2010

Свободный интерфейс с Model Builder является правильным способом сделать это. Вы также можете использовать атрибуты DataAnnotation (если вы предпочитаете атрибуты):

http://blogs.msdn.com/b/efdesign/archive/2010/03/30/data-annotations-in-the-entity-framework-and-code-first.aspx

...