示例#1
0
 static void FluentApiUpdatePerson()
 {
     using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
     {
         var person = context.Persons.FirstOrDefault();
         person.FirstName = "Rowena";
         context.SaveChanges();
     }
 }
示例#2
0
 static void FluentApiUpdatePersonDestination()
 {
     using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
     {
         var destination = context.Destinations.FirstOrDefault();
         destination.Country = "Rowena";
         context.SaveChanges();
     }
 }
示例#3
0
        /// <summary>
        /// 这个功能演示联级删除 FluentApi
        /// </summary>
        static void FluentApiDeleteDestinationInMemoryAndDbCascade()
        {
            Guid destinationId;

            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                var destination = new FluentApiModel.Destination
                {
                    Name    = "Sample Destination",
                    Address = new FluentApiModel.Address
                    {
                        City          = "City",
                        StreetAddress = "StreetAddress",
                        State         = "State",
                        ZipCode       = "ZipCode"
                    },
                    Info = new FluentApiModel.PersonalInfo
                    {
                        DietryRestrictions = "DietryRestrictions",
                        Height             = new FluentApiModel.Measurement
                        {
                            Reading = 0.1M,
                            Units   = "0.2"
                        },
                        Width = new FluentApiModel.Measurement
                        {
                            Reading = 1.1M,
                            Units   = "1.2"
                        }
                    },
                    Lodgings = new List <FluentApiModel.Lodging>
                    {
                        new FluentApiModel.Lodging
                        {
                            Name = "Lodging One"
                        },
                        new FluentApiModel.Lodging
                        {
                            Name = "Lodging Two"
                        }
                    }
                };

                context.Destinations.Add(destination);
                context.SaveChanges();
                destinationId = destination.DestinationId;
            }
            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                var destination = context.Destinations.Include("Lodgings").Single(d => d.DestinationId == destinationId);
                var aLodging    = destination.Lodgings.FirstOrDefault();
                context.Destinations.Remove(destination);
                Console.WriteLine("State of one Lodging: {0}", context.Entry(aLodging).State.ToString());
                context.SaveChanges();
            }
        }
示例#4
0
        /// <summary>
        /// 自定义链接字符串,创建一个自定义的DbConnection
        /// </summary>

#if false
        static void FluentApiReuseDbConnection()
        {
            var cstr = @"Server=.\SQLEXPRESS;
Database=BreakAwayContext;
Trusted_Connection=true";

            using (var connection = new SqlConnection(cstr))
            {
                using (var context = new FluentApiBreakAwayContext(connection))
                {
                    foreach (var destination in context.Destinations)
                    {
                        Console.WriteLine(destination.Name);
                    }
                }
            }
        }
示例#5
0
        /// <summary>
        /// 由EF框架生成的INSERT语句会将字符串 "Resort" 放进新加入行的Discriminator列中
        /// </summary>
        static void FluentApiInsertResort()
        {
            //创建Resort类型的实例
            var resort = new FluentApiModel.Resort
            {
                Name = "Top Notch Resort and Spa",
                MilesFromNearestAirport = 30,
                Activities  = "Spa, Hiking, Skiing, Ballooning",
                Destination = new FluentApiModel.Destination
                {
                    Name    = "Stowe, Vermont",
                    Country = "USA",
                    Address = new FluentApiModel.Address
                    {
                        City = "City",
                    },
                    Info = new FluentApiModel.PersonalInfo
                    {
                        DietryRestrictions = "DietryRestrictions",
                        Width = new FluentApiModel.Measurement
                        {
                            Reading = 1M,
                            Units   = "Units"
                        },
                        Height = new FluentApiModel.Measurement
                        {
                            Reading = 2M,
                            Units   = "Units2"
                        }
                    }
                }
            };

            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                //并且要保存到 Lodgings 它的基类中
                //EF框架将会在Discriminator列中插入字符串 "Resort".
                context.Lodgings.Add(resort);
                context.SaveChanges();
            }
        }
示例#6
0
        /// <summary>
        /// 数据库数据库初始化器添加种子数据
        /// </summary>
        static void FluentApiGreatBarrierReefTest()
        {
            //一个依赖于包含一些已知数据的数据库的测试
            //种子数据可以用另一种情况是运行集成测试
            //验证“Great Barrier Reef”是否为数据库中的Destination条目
            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                var reef = from destination in context.Destinations
                           where destination.Name == "Great Barrier Reef"
                           select destination;

                if (reef.Count() == 1)
                {
                    Console.WriteLine("Test Passed: 1 'Great Barrier Reef' destination found");
                }
                else
                {
                    Console.WriteLine("Test Failed: {0} 'Great Barrier Reef' destinations found", context.Destinations.Count());
                }
            }
        }
示例#7
0
        static void FluentApiQueryDestinationView()
        {
            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                //使用视图填充对象
                //var destinations = context.Destinations.SqlQuery("SELECT * FROM Destinations");


                //SqlQuery函数的方法依赖于在查询结果集的列名和对象属性名的精确匹配。
                //由于目标类包含DestinationId,Name和其他属性,视图必须返回与其相同名称的列。
                //如果视图没有与类属性相同的列名,需要在SELECT语句中的为列设置别名。
                //例如,TopTenDestinations视图使用Id而不是DestinationId作为主键的名称。

                //    var destinations2 = context.ViewDestinations.SqlQuery(@"
                //SELECT
                //    DestinationId,
                //    JustDecimal,
                //    Name
                //  FROM TopTenDestinations");

                var destinations3 = context.Database.SqlQuery <ViewDestination>(@"
   SELECT
       DestinationId,
       JustDecimal,
       Name
     FROM TopTenDestinations");

                var reef = from destination in destinations3
                           select destination;

                foreach (var item in reef)
                {
                    Console.WriteLine(item.Name + item.JustDecimal.ToString());
                }
            }
        }
示例#8
0
        //static void FluentApiInsertPerson()
        //{
        //    var person = new FluentApiModel.Person
        //    {
        //        FirstName = "Rowan",
        //        LastName = "Miller",
        //        SocialSecurityNumber = 12345678
        //    };
        //    using (var context = new FluentApiBreakAwayContext())
        //    {
        //        context.Persons.Add(person);
        //        context.SaveChanges();
        //    }
        //}

        /// <summary>
        /// 映射到继承层次结构
        /// 由EF框架生成的INSERT语句会将字符串 "Lodging" 放进新加入行的Discriminator列中
        /// </summary>
        static void FluentApiInsertLodging()
        {
            var lodging = new FluentApiModel.Lodging
            {
                Name        = "Rainy Day Motel",
                Destination = new FluentApiModel.Destination
                {
                    Name    = "Seattle, Washington",
                    Country = "USA",
                    Address = new FluentApiModel.Address
                    {
                        City = "City",
                    },
                    Info = new FluentApiModel.PersonalInfo
                    {
                        DietryRestrictions = "DietryRestrictions",
                        Width = new FluentApiModel.Measurement
                        {
                            Reading = 1M,
                            Units   = "Units"
                        },
                        Height = new FluentApiModel.Measurement
                        {
                            Reading = 2M,
                            Units   = "Units2"
                        }
                    }
                }
            };

            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                context.Lodgings.Add(lodging);
                context.SaveChanges();
            }
        }
示例#9
0
        static void FluentApiInsertDestination()
        {
            var destination = new FluentApiModel.Destination
            {
                Country     = "Indonesia",
                Description = "EcoTourism at its best in exquisite Bali",
                Name        = "Bali",
                Address     = new FluentApiModel.Address
                {
                    City          = "shanghai",
                    State         = "huayi",
                    ZipCode       = "000000",
                    StreetAddress = "yishanlu"
                },
                Info = new FluentApiModel.PersonalInfo
                {
                    DietryRestrictions = "DietryRestrictions",
                    Height             = new FluentApiModel.Measurement
                    {
                        Reading = 100,
                        Units   = "200"
                    },
                    Width = new FluentApiModel.Measurement
                    {
                        Reading = 200,
                        Units   = "300"
                    },
                },
                Lodgings = new List <FluentApiModel.Lodging>()
                {
                    new FluentApiModel.Lodging
                    {
                        Name  = "lodging Name",
                        Owner = "lodging Owner",
                        //IsResort = true,
                        MilesFromNearestAirport = 1.1M
                    },
                    new FluentApiModel.Lodging
                    {
                        Name  = "lodging Name2",
                        Owner = "lodging Owner2",
                        //IsResort = true,
                        MilesFromNearestAirport = 2.2M
                    }
                }
            };


            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                context.Destinations.Add(destination);
                context.SaveChanges();
            }

            using (var context = new FluentApiBreakAwayContext(nameOrConnectionString))
            {
                var destinationsArray = context.Destinations.ToList();
                var destinationFirst  = destinationsArray[0];
                destinationFirst.Description += "Trust us, you'll love it!";
                context.SaveChanges();
                //context.Destinations.Remove(destinationFirst);
                context.SaveChanges();
            }
        }