Заполнить класс модели результатами запроса - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть следующая модель ProductDetails.cs

public class ProductDetails
{
    public string ProductName { get; set; }

    public string ProductDescription { get; set; }

    public string ProductCodeID { get; set; }

    public string CategoryName { get; set; }

    public List<ProductDetails> lstProductDetails { get; set; }

}

Необходимо заполнить этот класс модели результатами запросов, которые я получаю из БД

Это то, что я пробовал..

    var results = from a in db.ProductInfoes where productCodeID.Equals(productCodeID)
                    select new ProductDetails
                    {
                        ProductName = a.Product_Name.ToString(),
                        ProductCategoryID= a.Category_ID.ToString(),
                        ProductDescription = a.Product_Description.ToString()
                    };       

Как лучше всего обновить класс модели результатами поиска?

Ответы [ 3 ]

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

Удалите свойство lstProductDetails из класса ProductDetails.

для получения всех данных (результаты будут иметь тип: List<ProductDetails>)

var results = db.ProductInfoes
                   .Select(x => new ProductDetails()
                    {
                        ProductName = x.Product_Name.ToString(),
                        ProductCategoryID= x.Category_ID.ToString(),
                        ProductDescription = x.Product_Description.ToString()
                    }).ToList();  

для получения одной записи (результат будет иметь тип: ProductDetails):

var result = db.ProductInfoes.FirstOrDefault(x => x.productCodeID.Equals(productCodeID))
                   .Select(x => new ProductDetails()
                    {
                        ProductName = x.Product_Name.ToString(),
                        ProductCategoryID= x.Category_ID.ToString(),
                        ProductDescription = x.Product_Description.ToString()
                    };  

(Добавить пространство имен System.Linq)

0 голосов
/ 20 сентября 2019
    public ProductDetails getSelectedProductDetails(string productCodeID)
    {
        try
        {
            NaturesKingdomUKEntities db = new NaturesKingdomUKEntities();

            List<ProductInfo> lst_ProductInfo = db.ProductInfoes.Where(x => x.Product_Code_ID.Equals(productCodeID)).ToList();

            ProductDetails prd = new ProductDetails();                    

            prd = lst_ProductInfo
                                 .Where(y => y.Product_Code_ID.Equals(productCodeID))
                                 .Select(x => new ProductDetails { ProductName = x.Product_Name, ProductCodeID = x.Product_Code_ID, UnitPrice=Convert.ToDouble(x.Unit_Price), ProductDescription=x.Product_Description, ProductAdditionalDescription=x.Product_Additional_Description, ProductType=x.Product_Type })
                                 .FirstOrDefault();                
            return prd;                

        }
        catch (Exception ex)
        {

            throw;
        }
    }

Наконец-то все работает именно так.Большое спасибо, ребята @ Matt.G

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

вы можете попробовать расширить ProductInfoes и использовать automapper.

public **partial class** ProductInfoes {
var config = new MapperConfiguration(cfg => {
            cfg.CreateMap<AuthorModel, AuthorDTO>();
        });
IMapper iMapper = config.CreateMapper();

        public ProductDetails Map()
        {
            return iMapper.Map<ProductInfoes , ProductDetails>(this);
        }

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