2016-09-27 124 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 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

我改寫的方法是這樣的:

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; 
     } 
    } 

這是否看起來更正確?

2 UPDATE

這是否看起來是正確的?

enter image description here

+0

您無法直接將數據庫查詢調用到類中。您需要物理地將數據庫字段中的項目轉移到類屬性中,或者使用序列化或反射。請Google「C-sharp sql datareader」和我在這裏使用的其他關鍵字的一些想法 –

+0

檢查你的DataContext文件或者如何調用我不確定,並且你必須改變存儲過程的返回類型,試試這個: 'StorePageCMS.Models.mn_StorePage_Select_One_Result storepage = db.mn_StorePage_Select_One(StorePageID);' –

+0

我添加了一個更新,請問您是否可以告訴我這個方法是否更接近它的工作原理?謝謝。 –

回答

1

如果你不使用實體框架 法典第一種模式由於StorePageCMS.Models.mn_StorePage_Select_One_Result沒有轉化爲StorePage,我假設它是一個存儲過程的結果。如果這是一個存儲過程結果(mn_StorePage_Select_One),則需要將其結果映射到StorePage模型,而不是在EDMX設計器中。

Edit Function Import screenshot

在這裏,你需要說出來返回StorePageCMS.Models.StorePage實體的集合。

+0

我添加了我所做的一個屏幕截圖。我沒有測試過它。 –

+0

將「返回一個集合」更改爲實體,並將其設置爲「StorePageCMS.Models.StorePage」。它必須正確地映射到該實體,但看起來可能如此。 – TylerY86

相關問題