using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Objects; namespace FullDemo { class Program { static void Main(string[] args) { DisplayExtrasForCar(1); DisplayExtrasForCar(3); //AddEjectorSeatToCar(1); //DisplayExtrasForCar(1); //IEnumerable extrasForCar1 = GetExtrasForCar(1); //DisplayCarsThatOwnExtras(extrasForCar1); //DisplayAllCarRegsUsingStoredProcedure(); Console.ReadLine(); } private static void DisplayExtrasForCar(int carID) { using (CarsDatabaseEntities context = new CarsDatabaseEntities()) { var extras = from e in context.Extras where e.CarID == carID select e; foreach (var e in extras) { Console.WriteLine(e); } } } private static IEnumerable GetExtrasForCar(int carID) { using (CarsDatabaseEntities context = new CarsDatabaseEntities()) { var extras = from e in context.Extras where e.CarID == carID select e; return extras.ToList(); } } private static void DisplayCarsThatOwnExtras(IEnumerable extras) { using (CarsDatabaseEntities context = new CarsDatabaseEntities()) { foreach (Extra extra in extras) { var theCar = (from c in context.Cars where c.CarID == extra.CarID select c).First(); Console.WriteLine("{0}, registration {1}, owner {2}, has {3} extras.", theCar.Make, theCar.Reg, theCar.Owner, theCar.Extras.Count()); } } } private static void AddEjectorSeatToCar(int carID) { using (CarsDatabaseEntities context = new CarsDatabaseEntities()) { var theCar = (from c in context.Cars where c.CarID == carID select c).First(); theCar.Extras.Add(new Extra { Description = "Ejector seat", Cost = 40000 }); context.SaveChanges(); } } private static void DisplayAllCarRegsUsingStoredProcedure() { using (CarsDatabaseEntities context = new CarsDatabaseEntities()) { var theCars = from c in context.Cars select c; foreach (var c in theCars) { ObjectParameter objectParam = new ObjectParameter("reg", typeof(String)); context.GetReg(c.CarID, objectParam); Console.WriteLine("CarID {0} has registration {1}", c.CarID, objectParam.Value); } } } } public partial class Extra { public override string ToString() { return string.Format("{0}, cost: {1:c}", this.Description, this.Cost); } } }