EF4 Неизвестный столбец в списке полей

Итак, я немного озадачен. Я использовал универсальный репозиторий, и он прекрасно работает. Он находится поверх Entity Framework 4.1. Я использовал одну и ту же строку кода, чтобы получить набор данных много раз, и раньше у меня не было проблем. Однако эта таблица в моей базе данных, кажется, вызывает исключение, и я не могу понять, как это исправить.

Это дизайн таблицы в базе данных MySQL

Completed
=========
CompletedId
OldStepId
NewStepId
Name

Step
====
StepId
Name
Description

Это определение model.cs

public class Completed
{
    [Key]
    public int CompletedId { get; set; }

    public int OldStepId { get; set; }
    public int NewStepId { get; set; }
    public string Name { get; set; }

    public virtual Step OldStep { get; set; }
    public virtual Step NewStep { get; set; }
}

public class Step
{
    [Key]
    public int StepId { get; set; }

    public string Name { get; set; }
    public string Description { get; set; }
}

Определение контекста

public DbSet<Completed> Completeds { get; set; }
public DbSet<Step> Steps { get; set; }

Вызывающий код контроллера

var completeds = new List<Completed>();
using (var gm = new GenericRepo<Completed>())
{
  completeds = gm.Get().ToList();
}

Метод get из репозитория (упрощенный)

public IEnumerable<T> Get()
{
 var context = new exampleContext();
 DbSet<T> dbSet = context.Set<T>();
 IQueryable<T> query = dbSet;
 return query.ToList();
}

Это ошибка, которую я получаю из браузера при переходе к действию

Unknown column 'Extent1.OldStep_StepId' in 'field list'

Это внутреннее исключение, полученное от отладчика

InnerException: MySql.Data.MySqlClient.MySqlException
   Message=Unknown column 'Extent1.OldStep_StepId' in 'field list'
   Source=MySql.Data
   ErrorCode=-2147467259
   Number=1054
   StackTrace:
        at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
        at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
        at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
        at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
        at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
        at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
        at MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
        at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
        at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)

Это запрос, который, кажется, имеет проблему от отладчика прямо перед ошибкой сбой приложения

{SELECT
`Extent1`.`CompletedId`, 
`Extent1`.`OldStepId`, 
`Extent1`.`NewStepId`, 
`Extent1`.`Name`, 
`Extent1`.`OldStep_StepId`, 
`Extent1`.`NewStep_StepId`, 
`Extent1`.`Step_StepId`, 
`Extent1`.`Step_StepId1`
FROM `Completed` AS `Extent1`}

Используя рефлексию, я смог определить или, по крайней мере, предположить, что, возможно, причина, по которой StepId не отображается как поле в Step, заключается в том, что Step по какой-либо причине определен как Completed. Это может быть не так. Я не уверен, почему эта ошибка происходит.

Кто-нибудь сталкивался с чем-то подобным с Entity Framework раньше? Это проблема с моим кодом где-нибудь? Это проблема того, как таблицы связаны? У меня есть аналогичные определения для этой установки, которые работают безупречно, поэтому я не понимаю здесь расхождения. Единственная разница между этой таблицей и всеми остальными состоит в том, что есть две ссылки на один и тот же объект (Примечание. Класс Completed содержит два виртуальных объекта Step).

Также обратите внимание: этоне EF Code First.

Ответы на вопрос(1)

Ваш ответ на вопрос