Linq GetTable <> возвращает пустые строки - PullRequest
0 голосов
/ 20 сентября 2010

У меня очень странная проблема.Я следовал руководству по MVC.

У меня есть интерфейс:

namespace DomainModel.Abstract
{
    public interface IProductsRepository
    {
        IQueryable<Product> Products { get; }
    }
}

Хранилище наследует этот интерфейс:

namespace DomainModel.Concrete
{
    public class SqlProductsRepository : IProductsRepository
    {
        private Table<Product> productsTable;
        public SqlProductsRepository(string connectionString)
        {
            try
            {
                productsTable = (new DataContext(connectionString)).GetTable<Product>();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.Message);
            }
        }
        public IQueryable<Product> Products
        {
            get { return productsTable; }
        }
    }
}

Мой класс Product выглядит следующим образом:

namespace DomainModel.Entities
{
    [Table(Name = "Products")]
    public class Product
    {
        [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public string Category { get; set; }       
        public decimal Price { get; set; }

    }
}

И мой контроллер выглядит следующим образом:

namespace WebUI.Controllers
{
    public class ProductsController : Controller
    {

        private IProductsRepository productsRepository;
        public ProductsController()
        {
            string connString = @"Data Source=INFO_KW-HZ7YX91;Initial Catalog=SportStore;Integrated Security=True";
            productsRepository = new SqlProductsRepository(connString);

        }
        public ViewResult List()
        {
            return View(productsRepository.Products.ToList());

        }

    }
}

В таблице My Products есть 8 строк.Когда я запускаю веб-сайт, он отображает 8 строк, но все они пустые и равны нулю.Когда я его отладил, я вижу, что productsTable содержит 8 строк с правильными именами столбцов, но данные строк равны нулю, а целочисленные данные равны нулю.

Что я сделал не так?1019 *

Ответы [ 2 ]

0 голосов
/ 20 сентября 2010

Вы не добавили атрибуты [Column] ни в один из своих столбцов, кроме вашего ПК. LinqToSql очень тяжелый атрибут, и ручное кодирование классов будет сопряжено с риском и (скорее всего) пугающими исключениями. Вы должны использовать sqlmetal.exe или ваш собственный генератор.

0 голосов
/ 20 сентября 2010

Прошло довольно много времени с тех пор, как я в прошлый раз делал подобные атрибуты, но я полагаю, вам нужно поставить [Column] для всех свойств, которые необходимо сохранить.Примерно так:

    [Column]
    public string Name { get; set; }
    [Column]
    public string Description { get; set; }
    [Column]
    public string Category { get; set; }       
    [Column]
    public decimal Price { get; set; }

при условии, что имена полей вашей таблицы sql соответствуют именам свойств соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...