با سلام من دو تا جدول دارم به نام های article و category که رابطه یک به چند دارن
به وسیله کد های زیر
public virtual System.Collections.Generic.IList<Article> Article { get; set; } public virtual System.Collections.Generic.IList<Comment> Comment { get; set; }
حالا من می خوام بدونم داخل view که مربوط به Index، Article می باشد چه طور می تونم نام category را نشون بدم؟
مثلا کد زیر کار نمیکنه
@item.Category.Title
این کد را داخل Index Article نوشتم
@item.Category.First().Title
وقتی داخل view کد شما را قرار میدهم و برنامه را اجرا میکنم اررور
'Category' does not contain a definition for 'First' and no extension method 'First' accepting a first argument of type 'Category' could be found (are you missing a using directive or an assembly reference?)
را می دهد
باید اول چک کنید null نباشه
میتونید از FirstOrDefault استفاده کنید
من کد شما رو به item.Category.Title.First() تغییر دادم و با FirstOrDefault هم امتحان کردم الان میگه که
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
سلام
مدل را چطوری پاس میدید؟
کد اکشن Index را قرار بدید ...
return View(db.Article.ToList());
به این صورت اطلاعات را به Index پاس می دهم
اما هر کاری میکنم از index Article نمی تونم به category برسم
خب شما اصلا Category را لود نکردید که الان بخوایید استفاده کنید... ، باید به صورت لیزی لودینگ Category را پر کنید و بعد از لود اون ، حالا مدل را پاس بدید.
برای انجام این کار هم از علاوه بر استفاده از فضای نام System.Data.Entity باید از دستور زیر استفاده کنید:
return View(db.Articles.Include(a => a.Category).ToList());
و حالا در View از همان دستوری که نوشته بودید میتونید استفاده کنید ، یعنی :
@item.Category.Title
ممنونم دوست عزیز برای این زمانی که میزارید اما من بازم به error رسیدم
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
خواهش میکنم ، مدلی که پاس دادید Null هستش...در خطا هم به همین دلیل اشاره کرده
با سلام
من کد شمارا امتحان کردم و اررور را برای شما ارسال کردم و الان break point گذاشتم و کد را امتحان کردم با این کد
db.Product.Include(p => p.Category).ToList();
اما در قسمت categroy null هست
و نمی دونم چه کاری باید انجام بدهم
آیا باید class DatabaseContext رو هم تغییر بدم؟
من داخل یک سایت یه چنین چیزی دیدم
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Player>() .HasOptional(p => p.Team) .WithMany(t => t.TeamMembers) .Map(c => c.MapKey("TeamId")); // Or alternatively you could start from the Team object: modelBuilder.Entity<Team>() .HasMany(t => t.TeamMembers) .WithOptional(p => p.Team) .Map(c => c.MapKey("TeamId")); }
نه نیازی به اینکار نیست ، مگر درصورتی که در یک جدول بیشتر از یک ارتباط دارید ، و آن هم با جدولی یکسان ، البته این توضیحی که بنده دادم یکی از موارد این گزینه هست.
که استفاده هایی متفاوت داره...
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)