ошибка, когда использование интерфейсов для сущностей Entity Framework (4.2)

Я использую последнюю версию Entity Framework (4.2) и пытаюсь реализовать интерфейсы для своих Entities, но по какой-то причине он не компилируется. error " Невозможно преобразовать тип выражения ICollection в возвращаемый тип ICollection ". Если я не использую интерфейсы для сущностей, я не получаю эту ошибку.

У меня есть отдельный проект для интерфейсов (для репозиториев, служб и т. д.), и мне нужно передать объекты EF в этих методах в качестве параметров, и я не хочу передавать в них фактические объекты, потому что для этого потребуется, чтобы проект интерфейса имел зависимость на объектах EF.

моя цель в чем-то похожа на цель, упомянутую в этом посте Могу ли я абстрагироваться от Entity Framework от моих Entities?

вот образец. Я просто поместил здесь образец, мои настоящие сущности разные, но проблема та же.

public interface IOrder
{
    int OrderId { get; set; }
    int CustomerId { get; set; }
    ICustomer Customer { get; set; }
}

public class Order : IOrder
{
    public int OrderId { get; set; }
    public int CustomerId { get; set; }
    ICustomer Customer { get; set; }
}

public interface ICustomer
{
    int CustomerId { get; set; }
    ICollection Orders { get; set; }
}

public class Customer : ICustomer
{
    public int CustomerId { get; set; }
    ICollection Orders { get; set; }
}

public class OrderMap : EntityTypeConfiguration
{
    this.HasOptional(t => t.Customer)
    .WithMany(t => t.Orders) //error comes from this line
    .HasForeignKey(d => d.CustomerId);
}

7
задан Community 23 May 2017 в 11:47
поделиться