0

我在我的android项目中使用它:

private readonly IMobileServiceTable<Product> table;
...
table = serviceClient.GetTable<Product>();
...
List<Product> _items = this.table.Where(x => x.Id == p.Id).ToListAsync().Result;

我的项目存在于表中。结果 (_items) 的所有字段都为空,除了正确的 id 值。

如果我这样做:

List<Product> _items = this.table.Select(x => new Product(x.Id, x.Name, x.Description, x.Width, x.Height, x.Depth, x.DimensionsUnit, x.Weight, x.WeightUnit, x.Price, x.SmallPic, x.BigPic, x.AddedTime)).Where(x => x.Id == p.Id).ToListAsync().Result;

一切都好...

这是我的产品类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Collections;
using System.ComponentModel;
using System.IO;

using Microsoft.WindowsAzure.MobileServices;

using Catalog.Core.Tools;

namespace Catalog.Core.Business
{

    /// <summary>
    /// Describe the object Product in the azure database
    /// </summary>
    public class Product : INotifyPropertyChanged
    {

        #region EVENTS

        public event PropertyChangedEventHandler PropertyChanged;

        // Create the OnPropertyChanged method to raise the event 
        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(name));
            }
        }
        #endregion


        #region ATTRIBUTES

        /// <summary>
        /// Gets or sets the id.
        /// </summary>
        /// <value>
        /// The id.
        /// </value>
        private int id;
        public int Id
        {
            get { return id; }
            set
            {
                id = value; 
                OnPropertyChanged("Id");
            }
        }

        /// <summary>
        /// Gets or sets the name.
        /// </summary>
        /// <value>
        /// The name.
        /// </value>
        public String Name { get; set; }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>
        /// The description.
        /// </value>
        public String Description { get; set; }

        /// <summary>
        /// Gets or sets the width.
        /// </summary>
        /// <value>
        /// The width.
        /// </value>
        public Decimal Width { get; set; }

        /// <summary>
        /// Gets or sets the height.
        /// </summary>
        /// <value>
        /// The height.
        /// </value>
        public Decimal Height { get; set; }

        /// <summary>
        /// Gets or sets the depth.
        /// </summary>
        /// <value>
        /// The depth.
        /// </value>
        public Decimal Depth { get; set; }

        /// <summary>
        /// Gets or sets the dimensions unit.
        /// </summary>
        /// <value>
        /// The dimensions unit.
        /// </value>
        public String DimensionsUnit { get; set; }

        /// <summary>
        /// Gets or sets the weight.
        /// </summary>
        /// <value>
        /// The weight.
        /// </value>
        public Decimal Weight { get; set; }

        /// <summary>
        /// Gets or sets the weight unit.
        /// </summary>
        /// <value>
        /// The weight unit.
        /// </value>
        public String WeightUnit { get; set; }

        /// <summary>
        /// Gets or sets the price.
        /// </summary>
        /// <value>
        /// The price.
        /// </value>
        public Decimal Price { get; set; }

        /// <summary>
        /// Gets or sets the small pic.
        /// </summary>
        /// <value>
        /// The small pic.
        /// </value>
        public String SmallPic { get; set; }

        /// <summary>
        /// Gets or sets the big pic.
        /// </summary>
        /// <value>
        /// The big pic.
        /// </value>
        private String bigpic;
        public String BigPic
        {
            get { return bigpic; }
            set
            {
                if (bigpic != value)
                {
                    bigpic = value;
                    OnPropertyChanged("BigPic");
                }
            }
        }


        /// <summary>
        /// Gets or sets the added time.
        /// </summary>
        /// <value>
        /// The added time.
        /// </value>
        public int AddedTime { get; set; }

        public String FormatDimensions { get { return this.Width + "x" + this.Height + "x" + this.Depth + this.DimensionsUnit; } }
        public String FormatWeight { get { return this.Weight + this.WeightUnit; } }
        public String FormatAddedTime { get { return Tools.DateSystem.UnixTimeStampToDateTime(this.AddedTime).ToString(); } }

        #endregion


        #region CONSTRUCTOR

        /* DO NOT REMOVE - SERIALIZATION */
        public Product() { }


        /// <summary>
        /// Initializes a new instance of the <see cref="Product"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="description">The description.</param>
        /// <param name="width">The width.</param>
        /// <param name="height">The height.</param>
        /// <param name="depth">The depth.</param>
        /// <param name="dimensionsUnit">The dimensions unit.</param>
        /// <param name="weight">The weight.</param>
        /// <param name="weightUnit">The weight unit.</param>
        /// <param name="price">The price.</param>
        /// <param name="smallPic">The small pic.</param>
        /// <param name="bigPic">The big pic.</param>
        /// <param name="addedTime">The added time.</param>
        /// <exception cref="System.IndexOutOfRangeException">
        /// Invalid price
        /// or
        /// Invalid weight
        /// or
        /// Invalid width
        /// or
        /// Invalid height
        /// or
        /// Invalid depth
        /// </exception>
        public Product(int id, String name, String description, Decimal width, Decimal height, Decimal depth, String dimensionsUnit, Decimal weight, String weightUnit, Decimal price, String smallPic, String bigPic, int addedTime)
        {
            this.Id = id;
            this.Name = name;
            this.Description = description;
            this.Width = width;
            this.Height = height;
            this.Depth = depth;
            this.DimensionsUnit = dimensionsUnit;
            this.Weight = weight;
            this.WeightUnit = weightUnit;
            this.Price = price;
            this.SmallPic = smallPic;
            this.BigPic = bigPic;
            this.AddedTime = addedTime;
        }


        public Boolean HasImage()
        {
            return (SmallPic != null);
        }


        #endregion



    }
}

我不明白为什么 where 不构建对象,也不知道在哪里寻找才能找到发生的事情。谢谢 !

4

0 回答 0