完善主體資料,免費(fèi)贈(zèng)送VIP會(huì)員!
    * 主體類型
    * 企業(yè)名稱
    * 信用代碼
    * 所在行業(yè)
    * 企業(yè)規(guī)模
    * 所在職位
    * 姓名
    * 所在行業(yè)
    * 學(xué)歷
    * 工作性質(zhì)
    請(qǐng)先選擇行業(yè)
    您還可以選擇以下福利:
    行業(yè)福利,領(lǐng)完即止!

    下載app免費(fèi)領(lǐng)取會(huì)員

    NULL

    ad.jpg

    二次開發(fā)教程:ef 查詢相關(guān)數(shù)據(jù)

    發(fā)布于:2019-07-24 16:27:06

    網(wǎng)友投稿

    更多

        public class DefaultContext : DbContext

        {

            private static string _conStr =

                @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=E:\code\gits\EntityFramework6\MultiTableDemo\MultiTableTest.mdf;Integrated Security=True";

            public DefaultContext()

                :base(_conStr)

            {

                //this.Configuration.LazyLoadingEnabled = false;

            }

            public DbSet<Person> Persons { get; set; }

     

            public DbSet<Book> Books { get; set; }

     

        }

        [Table("persons")]

        public class Person

        {

            [Key]

            [Column("person_id")]

            public int Id { get; set; }

            [Column("person_name")]

            public string Name { get; set; }        

            public Person()

            {

                Books = new List<Book>();

            }        

            public virtual List<Book> Books { get; set; }

        }

        [Table("books")]

        public class Book

        {

            [Key]

            [Column("book_id")]

            public int Id { get; set; }

            [Column("book_name")]

            public string Name { get; set; }

            [Column("person_id")]

            [ForeignKey("Person")]

            public int PersonId { get; set; }

            public Book()

            {

            }

            public virtual Person Person { get; set; }

        }

    先使用下面的方法創(chuàng)建數(shù)據(jù):


            static void CreateData()

            {

                using (DefaultContext context = new DefaultContext())

                {

                    Person person1 = new Person

                    {

                        Name = "Jim"

                    };

                    Book book1 = new Book()

                    {

                        Name = "Book1_Name"

                    };

                    Book book2 = new Book()

                    {

                        Name = "Book2_Name"

                    };

     

                    person1.Books.Add(book1);

                    person1.Books.Add(book2);

                    context.Persons.Add(person1);

                    context.SaveChanges();

                }

            }

    ef 里面查詢相關(guān)數(shù)據(jù)有三種方法:延遲加載,預(yù)先加載,顯式加載


    延遲加載:這個(gè)需要將相關(guān)屬性設(shè)為virtual  如:


    Person類里的public virtual List<Book> Books { get; set; } 


    Book類里的 public virtual Person Person { get; set; }


    并且將 DbContext的Configuration.LazyLoadingEnabled 屬性設(shè)為true(默認(rèn)是true)


    現(xiàn)在查詢Person的時(shí)候會(huì)自動(dòng)查詢出相關(guān)的Book


            static void Main(string[] args)

            {

                using (DefaultContext context = new DefaultContext())

                {

                    var p = context.Persons.FirstOrDefault();

                    var bk1 = p.Books.FirstOrDefault();                

                }

            }


    顯式加載:


    首先將在DefaultContext構(gòu)造函數(shù)里禁用 延遲加載,上面的代碼將查不到Book數(shù)據(jù)了


            public DefaultContext()

                :base(_conStr)

            {

                this.Configuration.LazyLoadingEnabled = false;

            }


    查詢方法如下:       


           static void Main(string[] args)

            {

                using (DefaultContext context = new DefaultContext())

                {

                    var p = context.Persons.FirstOrDefault();

                    context.Entry(p).Collection(tp => tp.Books).Load();     //顯式加載           

                    var bk1 = p.Books.FirstOrDefault();         

                }

            }


    或:


            static void Main(string[] args)

            {

                using (DefaultContext context = new DefaultContext())

                {

                    var bk = context.Books.FirstOrDefault();

                    context.Entry(bk).Reference(b => b.Person).Load();//顯式加載     

                    var p1 = bk.Person;

                }

            }


    預(yù)先加載


            static void Main(string[] args)

            {

                using (DefaultContext context = new DefaultContext())

                {

                    var p = context.Persons.Where(tp => tp.Name == "Jim").Include(tp => tp.Books).FirstOrDefault();

                }

            }

    本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

    未標(biāo)題-1.jpg

    上一篇:二次開發(fā)教程:HttpWebRequest&&multipart/form-data

    下一篇:二次開發(fā)教程:entity framework 遷移

    60acb4e0ef112.png
    主站蜘蛛池模板: 视频一区二区三区免费观看| 一区二区无码免费视频网站| 精品一区二区三区在线成人| 亚洲AV成人精品日韩一区| asmr国产一区在线| 色综合视频一区二区三区44| 日韩在线不卡免费视频一区| 国精产品一区二区三区糖心| 精品一区二区三区在线观看l| 中文字幕日韩人妻不卡一区| 日本高清无卡码一区二区久久 | 精品人妻系列无码一区二区三区 | 无码欧精品亚洲日韩一区| 八戒久久精品一区二区三区| 精品人妻无码一区二区三区蜜桃一 | 一区二区免费视频| 亚洲AV综合色一区二区三区| 亚洲一区二区三区在线观看精品中文| 精品一区二区三区在线观看l | 成人日韩熟女高清视频一区| 日韩经典精品无码一区| 日本精品一区二区三区视频| 亚洲国产AV一区二区三区四区| 日韩一区二区视频在线观看| 无码av人妻一区二区三区四区 | 亚洲日本一区二区三区在线| 国产一区二区三区免费观看在线| 亚洲一区无码精品色| 国产免费播放一区二区| 中文字幕aⅴ人妻一区二区| 亚洲乱码日产一区三区| 人妻夜夜爽天天爽爽一区| 91福利一区二区| 中文字幕日韩一区二区不卡| 久久久国产精品无码一区二区三区 | 亚洲日韩精品一区二区三区| 无码日韩精品一区二区免费暖暖 | 日韩精品福利视频一区二区三区| 日韩免费无码一区二区视频| 精彩视频一区二区三区| 成人国产一区二区三区|