Я использую EF 4.3, и я вносил небольшие изменения в мои объекты, но ни один из классов сущностей, которые являются частью этой ошибки , Я хотел бы понять, почему это началось внезапно.Как исправить «Недопустимое имя столбца« Дискриминатор »« Ошибка структуры Entity
Мои классы:
public class Apple: Fruit
{
public Color Color{ get; set; }
}
public class Fruit: EntityBase
{
public int Size{ get; set; }
public DateTime? DateGrown{ get; set; }
public User GrownBy{ get; set; }
public User SoldBy{ get; set; }
}
public class EntityBase
{
public int Id{ get; set;}
}
Линия, которая теперь бросает "Неверное имя столбца 'Дискриминатор'":
repository.Apples.Include("GrownBy").Include("SoldBy")
.Where(r => r.GrownBy.Id == user.Id
|| r.SoldBy.Id == user.Id).ToList();
Если я копирую SQL, что repository.Apples пытается и запускать его в SSMS, он работает очень хорошо:
SELECT
[Extent1].[Id] AS [Id],
'0X0X' AS [C1],
[Extent1].[DateGrown] AS [DateGrown],
[Extent1].[Color] AS [Color],
[Extent1].[DateGrown] AS [DateGrown],
[Extent1].[GrownBy_Id] AS [GrownBy_Id],
[Extent1].[SoldBy_Id] AS [SoldBy_Id],
[Extent1].[Size] AS [Size],
FROM [dbo].[Fruits] AS [Extent1]
WHERE [Extent1].[Discriminator] = N'Apple'
Я попытался добавить [NotMapped] Аннотация данных, как recommmended @EF Code First "Invalid column name 'Discriminator'" but no inheritance, как:
[NotMapped]
public class Apple: Fruit
{
public Color Color{ get; set; }
}
но создает новую ошибку:
The type 'Domain.Entities.Apple' was not mapped. Check that the type has not been explicitly excluded by using the Ignore method or NotMappedAttribute data annotation. Verify that the type was defined as a class, is not primitive, nested or generic, and does not inherit from EntityObject.
на следующей строке:
_context.Database.Initialize(true);
На самом деле начинаю сожалеть об использовании EF, поскольку он постоянно вызывает такие новые проблемы, как это каждую неделю. Если кто-то может дать какое-либо представление о исправлении, мы будем весьма признательны.
EDIT: Таким образом, похоже, что это не имеет ничего общего с объектами Fruit или Apple. Я добавил унаследованный класс объекта User, и это то, что заставляет вещи сломаться.