1

Web API プロジェクト ASP.NET MVC 4.0 RC 内のエンティティ フレームワークを使用して、ODP.net で Odata フィルターを使用しようとしています。OwnDTO の IQueryable を返したい。詳細なしで内部 500 エラーが発生します。webapi RC にエラー生成のバグがあることは知っていますが、バグが私の問題だとは思いません。

    Get http://localhost:51744/api/Owner  called using Fiddler




    [Queryable]
    public IQueryable<OwnDTO> Get()        
    {            
        using (Entities context = new Entities())
        {
            var query = from item in context.Owners
                        select
                        new OwnDTO
                        {
                            Name = item.Name

                        };
            return query.AsQueryable();
        }
    }

//非常に単純な例

 public class OwnDTO
    {
        public string Name;
    }

Oracle EF によって生成されたクラス (DAO) を使用して Get から戻る必要はありませんが、EntityObject をより使いやすいインターフェイスに置き換えればできることはわかっています。IEnumerable を返すと動作しますが、Odata フィルターが必要です。


誰かが実際の例を望んでいる場合に備えて更新してください。Automapper または simliar を linq で使用し、コンテキストを注入する必要があります。


    [Queryable]
    public IQueryable<OwnDTO> Get()        
    {            
        {
            var query = from item in Hack._EFContext.Owners
                        select
                        new OwnDTO
                        {
                            Name = item.Name

                        };
            return query.AsQueryable();
        }
    }

それは正常に動作しますが、Odata は RC 後に削除されたようです。そのため、別のパスを検索する必要があります。

4

1 に答える 1

1

RCでは機能しますが、出荷時にはRTMでは機能しない可能性があります。まだ明確ではありません。

問題は、usingブロックを使用しているため、コンテキストを破棄していることです。したがって、データが取得される前にコンテキストが破棄されます。

usingしたがって、リクエストの最後にオブジェクトを登録して廃棄する代わりに。Tugberkにはここに投稿があります。

于 2012-08-01T15:06:13.310 に答える