0

たとえば、すべてのエンティティに共通のインターフェイスが実装されている場合:

public interface IEntity {
    int Id { get; set; }
    DateTime ValidFrom { get; set; }
    DateTime? ValidTo { get; set; }
}

ValidToがnullの場合、クエリの一部として返されるオブジェクトを除外することは可能ですか?まだ有効なオブジェクトのみを返します。

私がこのアイデアを得るところは、JuliaLermanとRowanMillerがPEF:DbContextで類似したものを使用して、切断されたエンティティに状態を設定することですが、特定のインターフェイスを実装するすべてのエンティティを反復処理できる状態マネージャーを介してそれを行います-I同様のことをしたいが、サブエンティティを含むクエリで。

SQL Server 2012、EF5、および.Net4.5を使用しています。

4

1 に答える 1

0

ChangeTracker.Entries<T>()参照する例は、ジェネリック型パラメーターとしてインターフェースを受け入れるメソッドに依存しています。もちろん、これはすべてメモリ内で行われ、SQLへの変換は含まれません。

linqをSQLに変換する場合、エンティティフレームワークは(まだ)インターフェイスをサポートしていません。これは、基本的DbSet<T>に、具象クラスに基づいている必要があるためです。

唯一のチャンスは、インターフェースの代わりに基本タイプを作成し、それからエンティティを派生させることです。

于 2012-12-04T19:03:41.687 に答える