public interface INamedEntity
{
int ID { get; set; }
string Name { get; set; }
}
// This is an Entity Framework class which has CustomerID and CustomerName properties.
public partial class Customer: INamedEntity
{
int INamedEntity.ID
{
get { return this.CustomerID; }
set { this.CustomerID = value; }
}
string INamedEntity.Name
{
get { return this.CustomerName; }
set { this.CustomerName = value; }
}
}
...
public string GetName<T>(int entityID) where T: EntityObject, INamedEntity
{
using(var repository = RepositoryFactory.CreateRepository<T>())
{
return repository
.Where(e => e.ID == entityID)
.Select(e.Name)
.Single();
}
}
次の例外は、汎用ソース上とWHERE句で使用されるインターフェース部材とベースのクエリ実行中occures。
NotSupportedException:インターフェイスメンバ[InterfaceName]。[MemberName]のマッピングがサポートされていません。
例外が発生するのは、クエリで複数のアイテムが返され、==演算子が使用された場合のみです。 First、FirstOrDefaultまたはSingleのクエリを実行したとき、またはwhere句でequalsやその他の演算子を使用したときにエラーを再現できませんでした。
参考:これは、サポートされていませんInterface not supported
はい、問題のようです。 – gareththegeek