最新のバージョンのEntity Framework(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);
}
可能な回避策がhttp://stackoverflow.com/questionsで示唆したように/ 9805329/how-to-use-interface-properties-with-codefirst/10994290#10994290 – Cel