2014-01-15 2 views
0

Я использую новейшую версию ASP.NET Entity Framework Code First.Задать внешний ключ с аннотациями данных

Если у меня есть два класса следующим образом:

public class Student 
{ 
    public int ID { get; set; } 
} 

public class Classroom 
{ 
    public int ID { get; set; } 
    public Student Student { get; set; } 
} 

Есть ли способ для меня, чтобы использовать аннотации данных, так что, когда таблица Классная генерируется, он знает, что я хочу ForeignKey существовать в классе под названием Студенческий билет? Я знаю, как это сделать с FluentAPI, но если бы я мог сделать это с помощью Data Annotations, это сделало бы мое приложение более простым. Я также хотел бы избежать наличия отдельного свойства StudentID в реальной объектной модели, поскольку он кажется повторяющимся.

+0

William, Repetitive - это путь в Entity Framework при установлении отношений. Лучше иметь как идентификатор, так и объект для гуру EF Джули Лерман. Может быть, кто-то еще может прокомментировать «почему». –

+0

Я где-то читал, что EF что-то делает, чтобы сохранить эти два, я тоже синхронизирую - вы знаете подробности этого? Это делается в сеттерах или только при совершении изменений в базе данных? – William

ответ

1
public class Student 
{ 
public int ID { get; set; } 
} 

public class Classroom 
{ 
public int ID { get; set; } 
public Student Student { get; set; } 

[ForeignKey("Student")] 
public int StudentId {get; set;} 



} 
+0

, но это использует явное свойство int StudentId - кажется, что это не нужно - есть ли способ его использования или есть причина, по которой я должен его использовать? – William

+0

Смотрите мой комментарий выше. Код EF сначала должен угадывать меньше с большей информацией, которую вы предоставляете. Подумайте об этом ... это свойство Id, и вы работаете с отношениями с базой данных ... это фундаментальный не лишний пух. :) ИМХО –

Смежные вопросы