我正在使用實體框架(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