Exemplo n.º 1
0
        public void Include_ManyToMany()
        {
            g.sqlite.Delete <userinfo>().Where("1=1").ExecuteAffrows();
            g.sqlite.Delete <DEPARTMENTS>().Where("1=1").ExecuteAffrows();
            g.sqlite.Delete <dept_user>().Where("1=1").ExecuteAffrows();
            BaseEntity.Initialization(g.sqlite);

            userinfo user = new userinfo {
                userid = 1, badgenumber = "", Name = "", IDCardNo = ""
            };

            user.Insert();

            user.depts = new List <DEPARTMENTS>(
                new[] {
                new DEPARTMENTS {
                    deptid = 1, deptcode = "01", deptname = ""
                },
                new DEPARTMENTS {
                    deptid = 2, deptcode = "02", deptname = ""
                },
                new DEPARTMENTS {
                    deptid = 3, deptcode = "03", deptname = ""
                },
            });
            user.SaveMany("depts");

            user.depts = new List <DEPARTMENTS>(
                new[] {
                new DEPARTMENTS {
                    deptid = 1, deptcode = "01", deptname = ""
                },
                new DEPARTMENTS {
                    deptid = 2, deptcode = "02", deptname = ""
                },
                new DEPARTMENTS {
                    deptid = 4, deptcode = "04", deptname = ""
                },
            });
            user.SaveMany("depts");

            user.depts = new List <DEPARTMENTS>(
                new[] {
                new DEPARTMENTS {
                    deptid = 2, deptcode = "02", deptname = ""
                },
            });
            user.SaveMany("depts");

            g.sqlite.CodeFirst.SyncStructure <Song_tag>();
            g.sqlite.CodeFirst.SyncStructure <Tag>();
            g.sqlite.CodeFirst.SyncStructure <Song>();

            var test150_01 = g.sqlite.GetRepository <Tag>()
                             .Select.From <Tag>((s, b) => s.InnerJoin(a => a.Id == b.Id))
                             .ToList((a, b) => new
            {
                a.Id,
                a.Name,
                id2   = b.Id,
                name2 = b.Name
            });


            using (var ctx = g.sqlite.CreateDbContext())
            {
                var test150_02 = ctx.Set <Tag>()
                                 .Select.From <Tag>((s, b) => s.InnerJoin(a => a.Id == b.Id))
                                 .ToList((a, b) => new
                {
                    a.Id, a.Name,
                    id2 = b.Id, name2 = b.Name
                });

                var songs = ctx.Set <Song>().Select
                            .IncludeMany(a => a.Tags)
                            .ToList();

                var tag1 = new Tag
                {
                    Ddd  = DateTime.Now.Second,
                    Name = "test_manytoMany_01_中国"
                };
                var tag2 = new Tag
                {
                    Ddd  = DateTime.Now.Second,
                    Name = "test_manytoMany_02_美国"
                };
                var tag3 = new Tag
                {
                    Ddd  = DateTime.Now.Second,
                    Name = "test_manytoMany_03_日本"
                };
                ctx.AddRange(new[] { tag1, tag2, tag3 });

                var song1 = new Song
                {
                    Create_time = DateTime.Now,
                    Title       = "test_manytoMany_01_我是中国人.mp3",
                    Url         = "http://ww.baidu.com/"
                };
                var song2 = new Song
                {
                    Create_time = DateTime.Now,
                    Title       = "test_manytoMany_02_爱你一万年.mp3",
                    Url         = "http://ww.163.com/"
                };
                var song3 = new Song
                {
                    Create_time = DateTime.Now,
                    Title       = "test_manytoMany_03_千年等一回.mp3",
                    Url         = "http://ww.sina.com/"
                };
                ctx.AddRange(new[] { song1, song2, song3 });

                ctx.Orm.Select <Tag>().Limit(10).ToList();

                ctx.AddRange(
                    new[] {
                    new Song_tag {
                        Song_id = song1.Id, Tag_id = tag1.Id
                    },
                    new Song_tag {
                        Song_id = song2.Id, Tag_id = tag1.Id
                    },
                    new Song_tag {
                        Song_id = song3.Id, Tag_id = tag1.Id
                    },
                    new Song_tag {
                        Song_id = song1.Id, Tag_id = tag2.Id
                    },
                    new Song_tag {
                        Song_id = song3.Id, Tag_id = tag2.Id
                    },
                    new Song_tag {
                        Song_id = song3.Id, Tag_id = tag3.Id
                    },
                }
                    );
                ctx.SaveChanges();
            }
        }