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
は、これは正しい見えていますか?
クラスに直接データベースクエリを呼び出すことはできません。アイテムをデータベースフィールドからクラスプロパティに物理的に転送するか、シリアル化またはリフレクションを使用する必要があります。私はいくつかのアイデアのためにここで使用した他のキーワード –
あなたのDataContextファイルをチェックするか、それが正しいかどうかわかりません、あなたはストアドプロシージャの戻り値の型を変更する必要があります、これを試してください:Googleの "CシャープSQLのデータウェア" 'StorePageCMS.Models.mn_StorePage_Select_One_Result storepage = db.mn_StorePage_Select_One(StorePageID); ' –
私はアップデートを追加しました。あなたのフィードバックを教えてください。ありがとうございました。 –