複数の属性値を含むことができる2つのプロパティを持つStorePageという名前のモデルがあり、後でコントローラのメソッドで配列として宣言しましたデータ・リーダー、データベース/テーブルの列から値を取得して、これらの配列に入れて、フロントエンド・アプリケーションにアクセスできるようにします。C#:暗黙的に型 'int'を 'int []'に変換できません
public class StorePage
{
public int ActionTypeID { get; set; }
public int ResultTypeID { get; set; }
public string ResultMessage { get; set; }
public int StorePageID { get; set; }
public int SPPreambleID { get; set; }
public string Title { get; set; }
public string SEOTitle { get; set; }
public int ParentStorePageID { get; set; }
public string Meta { get; set; }
public string Image { get; set; }
public string ImageLink { get; set; }
public string Blurb { get; set; }
public int RegionID { get; set; }
public string Footer { get; set; }
// these are the arrays
public int[] SPAttributeRefID { get; set; }
public int[] AttributeID { get; set; }
}
//これは、データベースから値を取得する方法です。
public StorePage GetPage(int StorePageID, int SPPreambleID)
{
StorePage storepage = new StorePage();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DEV_BI01_LVT"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("mn_StorePage_GetPage", con))
{
cmd.Parameters.AddWithValue("@StorePageID", SqlDbType.Int).Value = StorePageID;
if (SPPreambleID != -1)
{
cmd.Parameters.AddWithValue("@SPPreambleID", SqlDbType.Int).Value = SPPreambleID;
}
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
storepage.StorePageID = reader.GetInt32(0);
storepage.Title = (reader.IsDBNull(1)) ? string.Empty : reader.GetString(1);
storepage.SEOTitle = (reader.IsDBNull(2)) ? string.Empty : reader.GetString(2);
storepage.ParentStorePageID = (reader.IsDBNull(3)) ? -1 : reader.GetInt32(3);
storepage.Meta = (reader.IsDBNull(4)) ? string.Empty : reader.GetString(4);
storepage.SPPreambleID = (reader.IsDBNull(5)) ? -1 : reader.GetInt32(5);
storepage.Image = (reader.IsDBNull(6)) ? string.Empty : reader.GetString(6);
storepage.ImageLink = (reader.IsDBNull(7)) ? string.Empty : reader.GetString(7);
storepage.Blurb = (reader.IsDBNull(8)) ? string.Empty : reader.GetString(8);
storepage.RegionID = (reader.IsDBNull(9)) ? -1 : reader.GetInt32(9);
storepage.Footer = (reader.IsDBNull(10)) ? string.Empty : reader.GetString(10);
for (int i = 0; i <= 3; i++)
{
storepage.SPAttributeRefID = reader.GetInt32(11);
}
}
}
}
return storepage;
}
Forループ内の行は私にエラーを与えている:
Cannot implicitly convert type 'int' to 'int[]'
storepage.SPAttributeRefID = reader.GetInt32(11);
はそれが可能誰かが私はこの問題を解決しようとすることができますか?私はおそらくキャストが不足しているか、値を取得して保存するためのより良い方法があるかもしれません。ページと属性値との関係は1対多である。私の場合、ページは複数の属性を持つことができます。これは楽器、スタイル、スコアリングです。ここで
は私が取得しようとしているものの例である:
23 trumpet seo 7 meta 26 trumpet.jpg /store/trumpet.jpg blurb 3 footer 1 506
23 trumpet seo 7 meta 26 trumpet.jpg /store/trumpet.jpg blurb 3 footer 2 183
23 trumpet seo 7 meta 26 trumpet.jpg /store/trumpet.jpg blurb 3 footer 3 45
最後の列は、属性列です。これは、単一のページレコードに関連する3つの異なる値であることがわかります。
ご協力いただきありがとうございます。
何をしますか?intを配列に追加したいのですか、それとも間違って定義しましたか?配列はintで始めるべきではありませんか? – Igor
あなたの最後の編集に基づいて答えを更新しました。これはこれを処理する1つの方法であり、結果の唯一の違いは最後の2つの列であることを前提としています。 – Igor