Если проблема существует только для недавно скопированных шрифтов, то это - проблема разрешения. Удостоверьтесь, что у текущего пользователя есть разрешение "считать" те шрифты.
Передайте каждый DataRow в конструктор класса (или используйте методы получения / установки) и преобразуйте каждый столбец в соответствующее свойство. Будьте осторожны со столбцами, допускающими значение NULL, чтобы правильно их извлечь.
public class POCO
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime? Modified { get; set; }
...
public POCO() { }
public POCO( DataRow row )
{
this.ID = (int)row["id"];
this.Name = (string)row["name"];
if (!(row["modified"] is DBNull))
{
this.Modified = (DateTime)row["modified"];
}
...
}
}
Таблица данных обычно содержит много строк - хотите ли вы преобразовать каждую строку в экземпляр объекта?
В этом случае вы можете, например, добавить к своему объекту POCO конструктор, который будет принимать DataRow
в качестве параметра, а затем извлекать биты и части из этого DataRow
:
public YourPOCO(DataRow row)
{
this.Field1 = row["Field1"].ToString();
...
this.FieldN = Convert.ToInt32(row["FieldN"]);
}
и так далее, а затем вызовите этот конструктор для каждой строки в коллекции DataTable.Rows
:
List<YourPOCO> list = new List<YourPOCO>();
foreach(DataRow row in YourDataTable.Rows)
{
list.Add(new YourPOCO(row));
}
И затем вы можете создать представление ASP.NET MVC или частичное представление на основе этого "YourPOCO "введите и используйте шаблон" Список ", чтобы создать список" YourPOCO "
Я видел ваш другой вопрос об использовании таблицы данных на уровне доступа к данным. Если вы в какой-то момент вернете POCO, неплохо было бы позволить вашему DAL уже возвращать POCO.
Вы должны использовать SqlDataReader для заполнения POCO. Это более легкий вес. Иногда проще использовать DataSet и DataTable для списков записей, но если вы все равно преобразуете строки в строго типизированный POCOS, я почти уверен, что это правильный путь.