У меня есть модель с именем StorePage, которая имеет 2 свойства, которые могут содержать несколько значений атрибутов, я объявил их как массивы, чтобы позже использовать метод в контроллере, итерации через считыватель данных, получить значения из столбца базы данных/таблицы, помещая их в эти массивы и сделать их доступными для моего приложения на передней панели.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;
}
Линия внутри для цикла дает мне ошибку:
Cannot implicitly convert type 'int' to 'int[]'
storepage.SPAttributeRefID = reader.GetInt32(11);
Можно ли кто-то может попытаться помочь мне решить эту проблему? Мне, вероятно, не хватает роли или, возможно, есть лучший способ получить и сохранить значения. Связь между страницей и значениями атрибутов от одного до многих. В моем случае страница может иметь несколько атрибутов, это инструменты, стили и скоринг.
Вот пример того, что я пытаюсь получить:
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
Я обновил свой ответ на основе вашего последнего изменения. Это один из способов справиться с этим, и он предполагает, что единственными отличиями в результатах являются те последние два столбца. – Igor