Я использую последнюю версию Entity Framework (4.2) и пытаюсь реализовать интерфейсы для своих объектов, и по какой-то причине она не компилируется. он выдает ошибку «Cannot convert expression type ICollection<IOrder> to return type ICollection<Order>
». если я не использую интерфейсы для сущностей, то я не получаю эту ошибку.ошибка при использовании интерфейсов для объектов Entity Framework (4.2)
У меня есть отдельный проект для интерфейсов (для репозиториев и сервисов и т. Д.), И мне нужно передать объекты EF в этих методах в качестве параметров, и я не хочу передавать фактические объекты в них, потому что это потребует интерфейса, чтобы иметь зависимость от объектов EF.
моя цель несколько похожа на один, упомянутых в этом посте Can I abstract Entity Framework away from my 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<IOrder> Orders { get; set; }
}
public class Customer : ICustomer
{
public int CustomerId { get; set; }
ICollection<IOrder> Orders { get; set; }
}
public class OrderMap : EntityTypeConfiguration<Order>
{
this.HasOptional(t => t.Customer)
.WithMany(t => t.Orders) //error comes from this line
.HasForeignKey(d => d.CustomerId);
}
возможный обходной путь на http://stackoverflow.com/questions/9805329/how-to-use-interface-properties-with-codefirst/10994290 # 10994290 – Cel