Wily_Fox
یک شنبه 20 مرداد 1392, 07:57 صبح
با سلام و خسته نباشید
من میخوام هنگامی که کاربر درخواست page ای رو میکنه هنگام ارسال اون page نظرات کاربران هم به همراه اون ارسال بشه.
واسه همین خواستم از Lazy Loading استفاده کنم. در نتیجه کلاس page هام و comment هام رو بشکل زیر تعریف کردم.
public class Page
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public long PageId { set; get; }
[Required]
[MaxLength(512)]
public string Abstract { set; get; }
[Required]
[MaxLength(128)]
public string Title { set; get; }
[Required]
public DateTime CreateDate { set; get; }
[Required]
public DateTime UpdateDate { set; get; }
public virtual IList<Comment> Comment { set; get; }
}
public class Comment
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public long CommentId { set; get; }
[Required]
public DateTime CreateDate { set; get; }
[Required]
public string Content { set; get; }
[Required]
public bool IsActive { set; get; }
[Required]
public long ParentId { set; get; }
[Required]
public long PageId { set; get; }
public virtual Page Page { get; set; }
public virtual IList<ConfirmComment> ConfirmComment { set; get; }
}
جهت استفاده query به شکل زیر نوشتم
return (from p in _Page
where p.PageId == id
select new PageViewModel
{
Comment = p.Comment,
CreateDate = p.CreateDate,
Title = p.Title,
UpdateDate = p.UpdateDate,
UserCreaterName=p.UserProfile.FirstName+" "+p.UserProfile.LastName
}).FirstOrDefault();
در اینجا
UserCreaterName=p.UserProfile.FirstName+" "+p.UserProfile.LastName
طبق Lazy Loading این دستور بدرستی انجام میشه.
اما در اینجا
Comment = p.Comment
طبق Lazy Loading باید Comment ، p.Comment رو مقداردهی کنه. اما مقدار نمی گیره! درواقع چیزی داخلش نیست که بتونه مقداردهی کنه.
متشکرم
من میخوام هنگامی که کاربر درخواست page ای رو میکنه هنگام ارسال اون page نظرات کاربران هم به همراه اون ارسال بشه.
واسه همین خواستم از Lazy Loading استفاده کنم. در نتیجه کلاس page هام و comment هام رو بشکل زیر تعریف کردم.
public class Page
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public long PageId { set; get; }
[Required]
[MaxLength(512)]
public string Abstract { set; get; }
[Required]
[MaxLength(128)]
public string Title { set; get; }
[Required]
public DateTime CreateDate { set; get; }
[Required]
public DateTime UpdateDate { set; get; }
public virtual IList<Comment> Comment { set; get; }
}
public class Comment
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public long CommentId { set; get; }
[Required]
public DateTime CreateDate { set; get; }
[Required]
public string Content { set; get; }
[Required]
public bool IsActive { set; get; }
[Required]
public long ParentId { set; get; }
[Required]
public long PageId { set; get; }
public virtual Page Page { get; set; }
public virtual IList<ConfirmComment> ConfirmComment { set; get; }
}
جهت استفاده query به شکل زیر نوشتم
return (from p in _Page
where p.PageId == id
select new PageViewModel
{
Comment = p.Comment,
CreateDate = p.CreateDate,
Title = p.Title,
UpdateDate = p.UpdateDate,
UserCreaterName=p.UserProfile.FirstName+" "+p.UserProfile.LastName
}).FirstOrDefault();
در اینجا
UserCreaterName=p.UserProfile.FirstName+" "+p.UserProfile.LastName
طبق Lazy Loading این دستور بدرستی انجام میشه.
اما در اینجا
Comment = p.Comment
طبق Lazy Loading باید Comment ، p.Comment رو مقداردهی کنه. اما مقدار نمی گیره! درواقع چیزی داخلش نیست که بتونه مقداردهی کنه.
متشکرم