static void FluentApiUpdatePerson() { using (var context = new FluentApiBreakAwayContext(nameOrConnectionString)) { var person = context.Persons.FirstOrDefault(); person.FirstName = "Rowena"; context.SaveChanges(); } }
static void FluentApiUpdatePersonDestination() { using (var context = new FluentApiBreakAwayContext(nameOrConnectionString)) { var destination = context.Destinations.FirstOrDefault(); destination.Country = "Rowena"; context.SaveChanges(); } }
/// <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(); } }
/// <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); } } } }
/// <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(); } }
/// <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()); } } }
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()); } } }
//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(); } }
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(); } }