2

次のような有益でない (私の意見では) エラー メッセージがあります。

System.NotSupportedException はユーザー コードによって処理されませんでした

Message='Company.Data.DataProvider.Schema.DerivedType' は、型フィルタリング操作の有効なメタデータ型ではありません。タイプ フィルタリングは、エンティティ タイプと複合タイプでのみ有効です。

データベースに次のテーブルがあります。

BaseType
ObjectID uniqueidentifier
.. other unrelated columns

DerivedType
ObjectID unqueidentifier
UserID unqueidentifier
.. other unrelated columns

継承を使用してEntity Frameworkで使用される次のクラスがあります。

BaseType
Guid ObjectID 
.. other unrelated properties

DerivedType : BaseType
Guid UserID 
.. other unrelated properties

私の部分的な SchemaContext は次のようになります。

public partial class SchemaContext
{
  public IQueryable<DerivedType> DerivedTypes
  {
    get { return this.BaseType.OfType<DerivedType>()
  }
}

次のようなメソッドがあります。

result = this._dbContexts.SchemaContext.DerivedTypes
  .Include(i => i.RatingType)
  .Include(i => i.ObjectVersion)
  .Where(dt => objectIDs.Any(id => 
                 dt.ObjectVersion.
                   .MatchingObjects
                   .Select(s => s.ObjectID).Contains(id))
               && dt.UserID == userID)
  .ToList();

がエラーをスローしている.OfType<>と思いますが、UserID でフィルター処理する必要があるため、基本型を使用できません。この問題を解決するための提案はありますか?

4

1 に答える 1

2

このエラー メッセージは、派生型がエンティティ モデルで適切に定義されていないことを示していると思います。エンティティ オブジェクト タイプ名を操作する POCO/Context ジェネレーターを使用している場合は、オブジェクトの名前が一致することを確認します。

于 2012-10-10T03:10:15.600 に答える