1

这些是我的课:

public class HotelRoomRatingView
    {
        public int HotelID { get; set; }
        public roomKinds RoomKinds { get; set; }
        public HotelReview HotelReview { get; set; }

        public HotelRoomRatingView()
        {
        }
        public HotelRoomRatingView(int hotelId, roomKinds rooms, HotelReview review)
        {
            this.HotelID = hotelId;
            this.RoomKinds = rooms;
            this.HotelReview = review;
        }
    }

public class HotelReview
{
    public int HotelReviewID { get; set; }

    public double Rating { get; set; }

    public List<Review> Reviews { get; set; }

    public HotelReview()
    {
        this.Reviews = new List<Review>();
    }
}

public partial class roomKinds : object, System.ComponentModel.INotifyPropertyChanged
{
    [Key]
    public int roomKindsId { get; set; }

    private ObservableCollection<objectKind> objectKindField;

    public roomKinds()
    {

    }
    public roomKinds(Class.roomKinds origin)
    {
        this.objectKindField = origin.objectKind;
    }

    [System.Xml.Serialization.XmlElementAttribute(Order = 0)]
    public ObservableCollection<objectKind> objectKind
    {
        get
        {
            return this.objectKindField;
        }
        set
        {
            this.objectKindField = value;
            this.RaisePropertyChanged("objectKind");
        }
    }

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string propertyName)
    {
        System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
        if ((propertyChanged != null))
        {
            propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }
}
public partial class Hotel : object, System.ComponentModel.INotifyPropertyChanged
    {
        [Key]
        public int HotelId { get; set; }
        private int hotIdField;
        // many others properties
        [System.Xml.Serialization.XmlElementAttribute(Order = 105)]
        public HotelReview hotelReview
        {
            get;
            set;
        }

        [System.Xml.Serialization.XmlElementAttribute(Order = 104)]
        public roomKinds rooms
        {
            get;
            set;
        }

        [System.Xml.Serialization.XmlElementAttribute(Order = 0)]
        public int hotId
        {
            get
            {
                return this.hotIdField;
            }
            set
            {
                this.hotIdField = value;
                this.RaisePropertyChanged("hotId");
            }
        }
    }

我的存储库中的 Get 方法如下所示:

public Models.Hotel Get(int id)
        {
            return db.hotels.SingleOrDefault(h => h.hotId == id);
        }

HotelId没关系,hotId我需要这种方式。所以我通过 LINQ 从数据库中获取 Hotel 并且我得到了 Hotel 但我没有从其他表中获取数据。我没有得到HotelReviewRoomKinds。我在这些属性中得到了 null 但在数据库中它们是并且它们Hotel通过ID. 感谢帮助

4

1 回答 1

3

您将需要使用以下命令显式加载它们.Include

return db.hotels.Include(hr => hr.HotelReview)
                .Include(rk => rk.RoomKinds)
                .SingleOrDefault(h => h.hotId == id);

更新

假设您的实体已正确链接,您应该能够在您的 .Ins 中继续沿链向下移动。包括:

return db.hotels.Include(hr => hr.HotelReview)
                .Include(r => r.HotelReview.Reviews)
                .Include(rk => rk.RoomKinds)
                .SingleOrDefault(h => h.hotId == id);
于 2013-01-24T14:56:42.013 回答