Циклическая ошибка ссылки в MVC3 и Entity Framework 4 - PullRequest
0 голосов
/ 18 июля 2011

Я признаю, что использование MVC3 / EF4 было легким делом, и контекст: модели работают лучше, чем я надеялся (хотя я всегда боюсь конструкций / каркасов, которые заставляют вещи происходить за каким-то занавесом, но эй, я стар школьная серая борода) и все прошло хорошо, пока я не затронул эту проблему.
Я видел много сообщений, связанных с этой проблемой, но не знаю, как решить ее в моем случае. Каждая таблица (сущность) имеет поле employeeID и может (и обычно является) другим сотрудником для большинства записей в каждой таблице. Очевидно, что только в одной таблице в DbContext может быть определен «виртуальный сотрудник» (или как я его назову), иначе я получу страшную «циклическую ошибку ссылки». В идеале я хотел бы, чтобы все три таблицы имели его, чтобы я мог легко получить доступ к имени сотрудников. Возможно, мне придется переопределить OnModelCreating (), но это (свободный API) полностью вне моей лиги. Любые гуру EF там ????

Models:

class meeting{
int meetingID; //key
string description  {get;set;}
int employeeID {get;set;}   // who scheduled
public virtual employee employee  {get;set;}
public virtual ICollection<agenda> agendas {get;set;}
}

class agenda{
int agendaID {get;set;}   // key
int employeeID  {get;set;}  // initiator
public virtual employee employee {get;set;}
public virtual ICollection<actionItem> actionItems {get;set;}
}

class actionItem{
int actioItemID {get;set;} //key
string description {get;set;}
int employeeID {get;set;} // action item lead
public virtual employee employee {get;set;}
}

class employee{
int employeeID  {get;set;}//key
string name {get;set;}
}

context:
public class meetings:DbContext{
public DbSet<meeting> meetings {get;set;}
public DbSet<agenda> Agendas
public DbSet<actionItem> actionItems{get;set;}
}

1 Ответ

3 голосов
/ 18 июля 2011

Полагаю, вы получаете эту ошибку при сериализации ваших моделей. Большинство людей используют второй набор моделей для абстрагирования от моделей EF, но если вы хотите придерживаться их, используйте подход из этого ответа, чтобы избавиться от вашей циклической эталонной проблемы:

EF 4.1 - Code First - Ошибка сериализации эталонной ссылки JSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...