我正在使用实体框架(4.2)的最新版本并尝试为我的实体实现接口,并且由于某些原因,它不会编译。它会抛出错误“Cannot convert expression type ICollection<IOrder> to return type ICollection<Order>
”。如果我不使用接口的实体,那么我不会得到这个错误。当为实体框架(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);
}
可能的解决方法/ 9805329/how-to-use-interface-properties-with-codefirst/10994290#10994290 – Cel 2012-06-12 10:22:42