50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

مشکل در گرفتن داده از دیتابیس با Entity Framework

سلام. یک دیتابیس با entity framework code first ایجاد کردم و دو تا از جدول ها به اسم Product و Sell وجود داره که رابطه یک چند دارن. وقتی میخوام به داده های جدول Sell که کلید خارجی به یک فیلد خاص در Product دارن رو دریافت بکنم مقدار null رو برمیگردونه. دقیقا از این کد ایراد میگیره و میگه value can not be null.

context.Products.Where(x => x.Id == product_id).First().Sells.ToList()[0].Payment.ToString()

در حالی که کلی داده توی دیتابیس هست، و به راحتی داده های دارای کلید خارجی به یک فیلد خاص از product رو داخل لیست ویو نشون میدم ولی این مشکل وجود داره. داخل wpf این کار رو انجام میدم.

پرسیده شده در 1397/06/05 توسط

11 پاسخ

0

این کد باید داخل OnModelCreating باشه؟

modelBuilder.Entity<Sell>().HasRequired<Product>(x=>x.Product).WithMany(x=>x.Sells);

اینها جواب نداد. ولی مهندس احمدی توی ویدئو هاشون اشاره ای نکردن به این موضوع. فقط گفتن اگه اون دو پروپرتی که توی مدل ها نوشتم تا ارتباط داشته باشن رو بنویسیم انتیتی فریم ورک اتوماتیک تشخیص میده و ارتباط رو ایجاد میکنه.

پاسخ در 1397/06/07 توسط
0

من قبلا توی پروژه های دیگه این کد هارو نوشتم و بدون مشکل کار کرده. همه ی کد هارو با پروژه های قبلی مطابقت دادم ولی نمیدونم مشکل کجاست.

پاسخ در 1397/06/06 توسط
0

توی جدول sell خود انتیتی فیلد Product_FK رو ایجاد کرده. دستی هم گذاشتم خودم ولی باز حل نشد.

پاسخ در 1397/06/07 توسط
0

سلام این کد رو امتحان کنید البته کد شما هم باید درست کار کنه

context.Products.First(c => c.Id == product_id).Sells.ToList()[0].Payment.ToString();
پاسخ در 1397/06/10 توسط
0
class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public Int64 Price { get; set; }
        public string Brand { get; set; }
        public string Group { get; set; }
        public virtual ICollection<Sell> Sells { get; set; }
    }

این جدول product بود. و جدول sell:

public int Id { get; set; }
        public Int64 Payment { get; set; }
        public int Number { get; set; }
        public DateTime Date { get; set; }
        public virtual Product Product { get; set; }
پاسخ در 1397/06/06 توسط
0

این هایی که نوشتید مدل های شما هستند. ولی شما map نکردید. بخش مپ رو هم باید بنویسید. برای نوشتن بخش مپ توی متد OnModelCreating باید مشخص کنید که دو جدول شما با هم ارتباط optional یا required دارند یا خیر و این که یک به چند هستند.

پاسخ در 1397/06/07 توسط
0

سلام به شما دوست عزیز

بدون شرط مساوی بودن id هم خطا میگیرید؟

پاسخ در 1397/06/05 توسط
0
 modelBuilder.Entity<Sell>().HasOptional(x=>x.Product).WithMany(x=>x.Sells);

این کد رو قرار دادم توی OnModelCreating. ولی هنوز همون مشکل هست و Sell های Product رو null برمیگردونه.

پاسخ در 1397/06/07 توسط
0

کلید خارجی هم براش توی جدول product بذارید

پاسخ در 1397/06/07 توسط
0

فکر می کنم قسمت مپ هایی که نوشته اید مشکل داره و ارتباطات جدول هاتون با هم درست نیست. اگه ممکنه اون بخش مپ جداول رو بذارید.

پاسخ در 1397/06/06 توسط
0

مهندس تا اونجا درسته و Product مورد نظر رو پیدا میکنه. ولی Sell های مرتبت با اون رو null بر میگردونه.

پاسخ در 1397/06/06 توسط

پاسخ شما