Отношения с кодом EntityFramework Сначала с помощью DataAnnotations - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть три таблицы, между которыми существуют следующие отношения:

Account {
   public int Id;
}

Job {
   public int Id;
   public int AccountId;
}

Practice {
   public int Id;
   public int AccountId;
   public string Name;
}

Я бы хотел иметь возможность получить доступ к объекту Практики через объект Job следующим образом:* Структура базы данных уже существует, поэтому изменять ее нельзя.Я хотел бы, чтобы EF предоставил доступ к этим отношениям, и я уверен, что может.Я заставил его работать, применив свойство навигации ICollection к «Практике» в классе Account и пометив свойство навигации «Account» в классе Practice с ForeignKey, но должен быть способ сделать это без использования коллекции.1008 * Итак, вопрос в том, какие атрибуты аннотации данных я должен попытаться использовать, чтобы получить желаемый результат?

1 Ответ

0 голосов
/ 22 декабря 2011

Описание

Для этого вам не нужен атрибут DataAnnotation. В Codefirst вы можете сделать следующее. Entity Framework сгенерирует таблицу, которую вы описали для вас.

Пример

Account {
   public int Id;
}

Job {
   public int Id;
   public virtual Account Account;
}

Practice {
   public int Id;
   public virtual Account Account;
   public string Name;
}

Если вам также нужен столбец ìnt (AccountId) в вашей организации, вы можете сделать это с помощью ModelBuilder. Сущность Framwork создает только один столбец внешнего ключа, как вы хотите.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Job>.HasRequired(x => x.Account).WithMany().HasForeignKey(x => x.Accountid);
 //
}

Дополнительная информация

ScottGu - Использование EF «Code First» с существующей базой данных

Обновление

Вы можете использовать Entity Framework Power Tools CTP1 для генерации Модели из существующей базы данных.

...