0

Linq を使用してデータベースからアイテムを選択し、エンティティ フレームワークを使用してエンティティを作成しています。Entity Frameworks は、関数のインポート ウィザードを使用して複合型も作成しました。複合型のいずれかを使用してクエリを返すたびに、結果を複合型の戻り型としてキャストしようとすると、null 値が返されます。

private AWorksLTEntities db = new AWorksLTEntities();

public IQueryable<SelectAll_Result> SelectAllMethod()
{
    var result = from p in db.Products
                 select p;
    return result as IQueryable<SelectAll_Result>;
}

SelectAll_Result は EntityFrameworks によって作成された複合型であり、キャストが機能せず、メソッドが null を返します。

通常のエンティティを使用した同じコードは値を返します

private AWorksLTEntities db = new AWorksLTEntities();
public Product SelectAllMethod()
{
    var result = from p in db.Products
                 select p;
    return result;
}

私の問題は、この例は非常に単純ですが、作業中のコード ジェネレーターを使用してこのクエリを作成していて、戻り値の型を確認するのが難しいため、エンティティによって生成された複雑な戻り値の型を使用できるようにする必要があることです。フレームワークは、標準のエンティティが返すのではなく、関数をインポートします。

何か案は?前もって感謝します。

4

1 に答える 1

2

キャスト演算子は、あるクラスから関連のない別のクラスに変換する方法を知りません。自分で変換を提供する必要があります。

public IQueryable<SelectAll_Result> SelectAllMethod()
{
    var result = from p in db.Products
                 select new SelectAll_Result() { a = p.a, b = p.b, ... };
    return result;
}
于 2013-01-25T13:25:29.407 に答える