2016-09-27 27 views
-1

IDを使用してページを取得するストアドプロシージャにアクセスしようとしています。C#:暗黙的に型を変換できません

しかし、私はエラーを取得しています:

Error 1 Cannot implicitly convert type 
'System.Data.Entity.Core.Objects.ObjectResult<StorePageCMS.Models.mn_StorePage_Select_One_Result>' to 'StorePageCMS.Models.StorePage' 

私はこの問題を解決する方法がわからないです。ストアドプロシージャは、SQL ServerのdbEntitiesに由来し、intパラメータをとります。

ご迷惑をおかけして申し訳ありません。

public List<StorePage> Get(int StorePageID) 
    { 
     List<StorePage> storepagelist = new List<StorePage>(); 

     using (dbEntities db = new dbEntities()) 
     { 
      var results = db.mn_StorePage_Select_One(StorePageID).ToList(); 
      foreach (var result in results) 
      { 
       var storepage = new StorePage() 
       { 

        StorePageID = result.StorePageID, 
        SPPreambleID = result.SPPreambleID, 
        Title = result.Title, 
        SEOTitle = result.SEOTitle, 
        ParentStorePageID = result.ParentStorePageID ?? -1, 
        Meta = result.Meta, 
        Image = result.Image, 
        ImageLink = result.ImageLink, 
        Blurb = result.Blurb, 
        RegionID = result.RegionID, 
        Footer = result.Footer 
       }; 
       storepagelist.Add(storepage); 
      } 
      return storepagelist; 
     } 
    } 

が、これは、より正確に見えるん:私は方法をこのように書き直し

public StorePage Get(int StorePageID) 
    { 
     using (dbEntities db = new dbEntities()) 
     { 
      StorePage storepage = db.mn_StorePage_Select_One(StorePageID); 

      if (storepage == null) 
      { 
       throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)); 
      } 
      return storepage; 
     } 
    } 

UPDATE?

2 UPDATE

は、これは正しい見えていますか?

enter image description here

+0

クラスに直接データベースクエリを呼び出すことはできません。アイテムをデータベースフィールドからクラスプロパティに物理的に転送するか、シリアル化またはリフレクションを使用する必要があります。私はいくつかのアイデアのためにここで使用した他のキーワード –

+0

あなたのDataContextファイルをチェックするか、それが正しいかどうかわかりません、あなたはストアドプロシージャの戻り値の型を変更する必要があります、これを試してください:Googleの "CシャープSQLのデータウェア" 'StorePageCMS.Models.mn_StorePage_Select_One_Result storepage = db.mn_StorePage_Select_One(StorePageID); ' –

+0

私はアップデートを追加しました。あなたのフィードバックを教えてください。ありがとうございました。 –

答えて

1

StorePageCMS.Models.mn_StorePage_Select_One_ResultStorePageへの変換を持っていないので、あなたはEntity Frameworkの のコードファーストモデルを使用していない場合、私はそれは、ストアドプロシージャの結果だと仮定しています。これがストアドプロシージャの結果(mn_StorePage_Select_One)の場合は、その結果をEDMXデザイナではなくStorePageモデルにマップする必要があります。

Edit Function Import screenshot

ここで、あなたはそれがStorePageCMS.Models.StorePageエンティティのコレクションを返す言う必要があると思います。

+0

私が行ったことのスクリーンショットを追加しました。私はそれをテストしていない。 –

+0

「コレクションを返す」をエンティティに変更し、それを 'StorePageCMS.Models.StorePage'に設定します。実際にはそのエンティティに正しくマップされている必要がありますが、そのように見えます。 – TylerY86

関連する問題