haamidd
جمعه 08 آبان 1394, 20:04 عصر
این جداول و ارتباطیه که من ایجاد کردم:
public class News
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<News> News { get; set; }
}
حالا من چطور میتونم اخبار های یک دسته خاص رو بازیابی کنم؟؟؟
ممنون : )
haamidd
یک شنبه 10 آبان 1394, 22:00 عصر
دوستان لطفا این راهنمایی رو به من بکنین ممنون میشم
Mahmoud.Afrad
دوشنبه 11 آبان 1394, 03:38 صبح
ابتدا دسته مورد نظر رو با شرط مناسب مشخص کن و بعد اخبار اون دسته رو سلکت کن.
در اینجا فرض کردم اخبار ورزشی دارای آیدی 3 هست
// Example: ID of SportCategory is 3
var sportNews =
from c in db.Categories
where c.Id == 3
from n in c.News
select n;
pbm_soy
سه شنبه 12 آبان 1394, 23:07 عصر
درصورت امکان چند رکورد نمونه از این دو جدول را در اینجا بنویسید
تا درک بهتری از ساختار این دو جدول پیدا کنیم
ahmad.t1100
سه شنبه 12 آبان 1394, 23:26 عصر
سلام دوست من
این لینک رو ببین و امیدوارم مفید باشه
http://windowsit.ir/showpost.aspx?id=13940812231638
haamidd
پنج شنبه 14 آبان 1394, 16:29 عصر
ابتدا دسته مورد نظر رو با شرط مناسب مشخص کن و بعد اخبار اون دسته رو سلکت کن.
در اینجا فرض کردم اخبار ورزشی دارای آیدی 3 هست
// Example: ID of SportCategory is 3
var sportNews =
from c in db.Categories
where c.Id == 3
from n in c.News
select n;
خیلی خیلی ممنون، و فقط یک سوال دیگه اینه که چطور میشه اخبار و دسته بندی هارو اضافه کرد؟ که با هم در ارتباط باشن!
یعنی مثلا ما 5 تا دسته بندی داشته باشیم و یک خبر اضافه کنیم که جز دسته اول و دوم باشه
ممنون
تشکر : )
Mahmoud.Afrad
جمعه 15 آبان 1394, 00:51 صبح
کافیه Category های مورد نظر رو بدست بیاری و در شئ News مورد نظر به مجموعه Categories اضافه کنید. (این کار رو هم برای اضافه کردن خبر جدید و هم برای ویرایش خبر قدیمی میتونید استفاده کنید)
مثلا برای افزودن خبری که هم علمی و هم ورزشی است به صورت زیر میتونی عمل کنی:
BloggingContext db = new BloggingContext();
News myNews = new News
{
Title = "//////",
Content = "..."
};
var myCategories = db.Categories.Where(c => c.Title == "ورزشی" || c.Title == "علمی");
foreach (var c in myCategories)
{
myNews.Categories.Add(c);
}
db.NewsList.Add(myNews);
db.SaveChanges();
البته بهتره به جای Title ، از مقایسه Id استفاده کنی.
haamidd
یک شنبه 17 آبان 1394, 01:55 صبح
مرسی
من این کارو کردم اما در قسمت myNews.Categories.Add(c); اررور
haamidd
یک شنبه 17 آبان 1394, 02:10 صبح
مرسی
من این کارو کردم اما در قسمت myNews.Categories.Add(c); اررور null میده و میگه که myNews.Categories نال هست
protected override void Seed(DataBaseContext DB)
{
base.Seed(DB);
//Setting
DB.Settings.Add(new Setting() { Title = "بدون عنوان", Description = "بدون توضیحات", Keywords = "بدون کلمات کلیدی", ShowCommentsAfterConfirm = true
, DisableSystemComments = false, CountNewsPerPage = 5, CountOfNewestNews = 5, CountOfPopularNews = 5, MaxUploadSize = "5000", InsertTime = DateTime.Now, CountNewsInSidebar = 3 });
DB.SaveChanges();
//Role
DB.Roles.Add(new Role() { Name = "Admin", InsertTime = DateTime.Now });
DB.Roles.Add(new Role() { Name = "Writer", InsertTime = DateTime.Now });
DB.SaveChanges();
//User
Role role = DB.Roles.Where(c => c.Name.Equals("Admin")).FirstOrDefault();
User user = new User() { FullName = new FullName() { FirstName = "بدون نام", LastName = "بدون نام خانوادگی" }, Username = "Administrator", Password = "123456", InsertTime = DateTime.Now, Enable = true, Roles = role };
DB.Users.Add(user);
DB.SaveChanges();
//Category
DB.Categories.Add(new Category() { Title = "سیاسی", Image = "~/Content/Images/DefaultSkinImages/siasi.jpg", Order = 1, InsertTime = DateTime.Now, ShowInSidebar = true });
DB.Categories.Add(new Category() { Title = "مذهبی", Image = "~/Content/Images/DefaultSkinImages/mazhabi.jpg", Order = 2, InsertTime = DateTime.Now, ShowInSidebar = true });
DB.Categories.Add(new Category() { Title = "فرهنگی", Image = "~/Content/Images/DefaultSkinImages/farhangi.jpg", Order = 3, InsertTime = DateTime.Now, ShowInSidebar = true });
DB.Categories.Add(new Category() { Title = "اقتصادی", Image = "~/Content/Images/DefaultSkinImages/eghtesadi.jpg", Order = 4, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "دولت", Image = "~/Content/Images/DefaultSkinImages/dolat.jpg", Order = 5, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "مقاله", Image = "~/Content/Images/DefaultSkinImages/maghale.jpg", Order = 6, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "ورزشی", Image = "~/Content/Images/DefaultSkinImages/varzeshi.jpg", Order = 7, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "اجتماعی", Image = "~/Content/Images/DefaultSkinImages/ejtemaei.jpg", Order = 8, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "فناوری", Image = "~/Content/Images/DefaultSkinImages/fanavari.jpg", Order = 9, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "رسانه ها", Image = "~/Content/Images/DefaultSkinImages/resane.jpg", Order = 10, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "محیط زیست", Image = "~/Content/Images/DefaultSkinImages/mohitezist.jpg", Order = 11, InsertTime = DateTime.Now });
DB.Categories.Add(new Category() { Title = "حوادث", Image = "~/Content/Images/DefaultSkinImages/havades.jpg", Order = 12, InsertTime = DateTime.Now });
DB.SaveChanges();
//News
User auther = DB.Users.Where(c => c.Username.Equals("Administrator")).FirstOrDefault();
News news = new News() { Title = "عنوان خبر 1", HeadTitle = "سر تیتر خبر 1", Description = "توضیحات خبر 1 توضیحات خبر 1 توضیحات خبر 1", Content = "محتوای خبر 1", Image = "~/Content/Images/DefaultSkinImages/NoImage.jpg", InsertTime = DateTime.Now, Users = auther };
var category = DB.Categories.Where(c => c.Id > 1 && c.Id < 5).ToList();
foreach (var item in category)
news.Categories.Add(item);
DB.News.Add(news);
news = new News() { Title = "عنوان خبر 2", HeadTitle = "سر تیتر خبر 2", Description = "توضیحات خبر 2 توضیحات خبر 2 توضیحات خبر 2", Content = "محتوای خبر 2", Image = "~/Content/Images/DefaultSkinImages/NoImage.jpg", InsertTime = DateTime.Now, Users = auther };
category = DB.Categories.Where(c => c.Id > 1 && c.Id < 2).ToList();
foreach (var item in category)
news.Categories.Add(item);
DB.News.Add(news);
news = new News() { Title = "عنوان خبر 2", HeadTitle = "سر تیتر خبر 2", Description = "توضیحات خبر 2 توضیحات خبر 2 توضیحات خبر 2", Content = "محتوای خبر 2", Image = "~/Content/Images/DefaultSkinImages/NoImage.jpg", InsertTime = DateTime.Now, Users = auther };
category = DB.Categories.Where(c => c.Id > 4 && c.Id < 5).ToList();
foreach (var item in category)
news.Categories.Add(item);
DB.News.Add(news);
news = new News() { Title = "عنوان خبر 3", HeadTitle = "سر تیتر خبر 3", Description = "توضیحات خبر 3 توضیحات خبر 3 توضیحات خبر 3", Content = "محتوای خبر 3", Image = "~/Content/Images/DefaultSkinImages/NoImage.jpg", InsertTime = DateTime.Now, Users = auther };
category = DB.Categories.Where(c => c.Id > 1 && c.Id < 5).ToList();
foreach (var item in category)
news.Categories.Add(item);
DB.News.Add(news);
DB.News.Add(new News() { Title = "عنوان خبر 4", HeadTitle = "سر تیتر خبر 4", Description = "توضیحات خبر 4 توضیحات خبر 4 توضیحات خبر 4", Content = "محتوای خبر 4", Image = "~/Content/Images/DefaultSkinImages/NoImage.jpg", InsertTime = DateTime.Now, Users = auther });
DB.News.Add(new News() { Title = "عنوان خبر 5", HeadTitle = "سر تیتر خبر 5", Description = "توضیحات خبر 5 توضیحات خبر 5 توضیحات خبر 5", Content = "محتوای خبر 5", Image = "~/Content/Images/DefaultSkinImages/NoImage.jpg", InsertTime = DateTime.Now, Users = auther });
DB.SaveChanges();
}
Mahmoud.Afrad
یک شنبه 17 آبان 1394, 09:29 صبح
پراپرتی هایی که مجموعه ای هستند رو در سازنده ایجاد کنید.
سازنده زیر رو به کلاس News اضافه کنید
public News()
{
if (Categories == null)
{
Categories = new List<Category>();
}
}
haamidd
سه شنبه 19 آبان 1394, 20:12 عصر
خیلی ممنون جناب "Mahmoud.Afrad" : )
پس با این مطلبی که فرمودید در هر جا که ما پراپرتی مجموعه ایی گذاشتیم باید عمل بالا رو حتما براش ایجاد کنیم؟ مانند زیر....
درستش به این صورت هست؟
public class News
{
public News()
{
if (Categories == null)
{
Categories = new List<Category>();
}
if (Comments == null)
{
Comments = new List<Comment>();
}
}
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public virtual ICollection<Category> Categories { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Category
{
public Category()
{
if (News == null)
{
News = new List<News>();
}
}
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<News> News { get; set; }
}
public class Comment
{
public int Id { get; set; }
public string FullName { get; set; }
public string Message { get; set; }
public virtual News News { get; set; }
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.