private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(b => { b.OneToMany(e => e.OrderLines, e => e.Product); b.OneToOne(e => e.Detail, e => e.Product); }); builder.Entity <Category>().OneToMany(e => e.Products, e => e.Category); builder.Entity <ProductDetail>(); builder.Entity <Order>().OneToMany(e => e.OrderLines, e => e.Order); builder.Entity <OrderLineDetail>().Key(e => new { e.OrderId, e.ProductId }); builder.Entity <OrderLine>(b => { b.Key(e => new { e.OrderId, e.ProductId }); b.OneToOne(e => e.Detail, e => e.OrderLine); }); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(b => { b.OneToOne(e => e.OriginalProduct, e => e.AlternateProduct) .ForeignKey <Product>(e => e.AlternateProductId); b.OneToOne(e => e.Detail, e => e.Product); }); builder.Entity <Category>().OneToMany(e => e.Products, e => e.Category); builder.Entity <ProductDetail>(); builder.Entity <ProductPhoto>(b => { b.Key(e => new { e.ProductId, e.PhotoId }); b.OneToMany(e => e.ProductTags, e => e.Photo) .ForeignKey(e => new { e.ProductId, e.PhotoId }); }); builder.Entity <ProductReview>(b => { b.Key(e => new { e.ProductId, e.ReviewId }); b.OneToMany(e => e.ProductTags, e => e.Review) .ForeignKey(e => new { e.ProductId, e.ReviewId }); }); builder.Entity <ProductTag>(); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(); builder.Entity <Category>(); builder.Entity <ProductDetail>(); var categoryType = model.GetEntityType(typeof(Category)); var productType = model.GetEntityType(typeof(Product)); var productDetailType = model.GetEntityType(typeof(ProductDetail)); var categoryFk = productType.AddForeignKey(categoryType.GetKey(), productType.GetProperty("CategoryId")); var alternateProductFk = productType.AddForeignKey(productType.GetKey(), productType.GetProperty("AlternateProductId")); var productDetailFk = productDetailType.AddForeignKey(productType.GetKey(), productDetailType.GetProperty("Id")); categoryType.AddNavigation(new Navigation(categoryFk, "Products", pointsToPrincipal: false)); productType.AddNavigation(new Navigation(categoryFk, "Category", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(alternateProductFk, "AlternateProduct", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(alternateProductFk, "OriginalProduct", pointsToPrincipal: false)); productDetailType.AddNavigation(new Navigation(productDetailFk, "Product", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(productDetailFk, "Detail", pointsToPrincipal: false)); return(model); }
private IModel CreateModel(DbContext context) { var model = new Model(); var modelBuilder = new ConventionModelBuilder(model); foreach (var setInfo in _setFinder.FindSets(context)) { modelBuilder.GetEntity(setInfo.EntityType); } context.OnModelCreating(modelBuilder); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(); builder.Entity <Category>(); builder.Entity <ProductDetail>(); builder.Entity <Order>(); builder.Entity <OrderLine>().Key(e => new { e.OrderId, e.ProductId }); builder.Entity <OrderLineDetail>().Key(e => new { e.OrderId, e.ProductId }); var categoryType = model.GetEntityType(typeof(Category)); var productType = model.GetEntityType(typeof(Product)); var productDetailType = model.GetEntityType(typeof(ProductDetail)); var orderType = model.GetEntityType(typeof(Order)); var orderLineType = model.GetEntityType(typeof(OrderLine)); var orderLineDetailType = model.GetEntityType(typeof(OrderLineDetail)); var categoryFk = productType.AddForeignKey(categoryType.GetKey(), productType.GetProperty("CategoryId")); var productDetailFk = productDetailType.AddForeignKey(productType.GetKey(), productDetailType.GetProperty("Id")); productDetailFk.IsUnique = true; var orderFk = orderLineType.AddForeignKey(orderType.GetKey(), orderLineType.GetProperty("OrderId")); var productFk = orderLineType.AddForeignKey(productType.GetKey(), orderLineType.GetProperty("ProductId")); var orderLineFk = orderLineDetailType.AddForeignKey(orderLineType.GetKey(), orderLineDetailType.GetProperty("OrderId"), orderLineDetailType.GetProperty("ProductId")); orderLineFk.IsUnique = true; categoryType.AddNavigation(new Navigation(categoryFk, "Products", pointsToPrincipal: false)); productType.AddNavigation(new Navigation(categoryFk, "Category", pointsToPrincipal: true)); productDetailType.AddNavigation(new Navigation(productDetailFk, "Product", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(productDetailFk, "Detail", pointsToPrincipal: false)); orderType.AddNavigation(new Navigation(orderFk, "OrderLines", pointsToPrincipal: false)); orderLineType.AddNavigation(new Navigation(orderFk, "Order", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(productFk, "OrderLines", pointsToPrincipal: false)); orderLineType.AddNavigation(new Navigation(productFk, "Product", pointsToPrincipal: true)); orderLineType.AddNavigation(new Navigation(orderLineFk, "Detail", pointsToPrincipal: false)); orderLineDetailType.AddNavigation(new Navigation(orderLineFk, "OrderLine", pointsToPrincipal: true)); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(); builder.Entity <Category>(); builder.Entity <ProductDetail>(); builder.Entity <ProductPhoto>().Key(e => new { e.ProductId, e.PhotoId }); builder.Entity <ProductReview>().Key(e => new { e.ProductId, e.ReviewId }); builder.Entity <ProductTag>(); var categoryType = model.GetEntityType(typeof(Category)); var productType = model.GetEntityType(typeof(Product)); var productDetailType = model.GetEntityType(typeof(ProductDetail)); var productPhotoType = model.GetEntityType(typeof(ProductPhoto)); var productReviewType = model.GetEntityType(typeof(ProductReview)); var productTagType = model.GetEntityType(typeof(ProductTag)); var categoryFk = productType.AddForeignKey(categoryType.GetKey(), productType.GetProperty("CategoryId")); var alternateProductFk = productType.AddForeignKey(productType.GetKey(), productType.GetProperty("AlternateProductId")); alternateProductFk.IsUnique = true; var productDetailFk = productDetailType.AddForeignKey(productType.GetKey(), productDetailType.GetProperty("Id")); productDetailFk.IsUnique = true; var photoFk = productTagType.AddForeignKey(productPhotoType.GetKey(), productTagType.GetProperty("ProductId"), productTagType.GetProperty("PhotoId")); var reviewFk = productTagType.AddForeignKey(productReviewType.GetKey(), productTagType.GetProperty("ProductId"), productTagType.GetProperty("ReviewId")); categoryType.AddNavigation(new Navigation(categoryFk, "Products", pointsToPrincipal: false)); productType.AddNavigation(new Navigation(categoryFk, "Category", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(alternateProductFk, "AlternateProduct", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(alternateProductFk, "OriginalProduct", pointsToPrincipal: false)); productDetailType.AddNavigation(new Navigation(productDetailFk, "Product", pointsToPrincipal: true)); productType.AddNavigation(new Navigation(productDetailFk, "Detail", pointsToPrincipal: false)); productTagType.AddNavigation(new Navigation(photoFk, "Photo", pointsToPrincipal: true)); productTagType.AddNavigation(new Navigation(reviewFk, "Review", pointsToPrincipal: true)); productPhotoType.AddNavigation(new Navigation(photoFk, "ProductTags", pointsToPrincipal: false)); productReviewType.AddNavigation(new Navigation(reviewFk, "ProductTags", pointsToPrincipal: false)); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(); builder.Entity <Category>(); var locationType = new EntityType("Location"); var idProperty = locationType.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); locationType.AddProperty("Planet", typeof(string), shadowProperty: true, concurrencyToken: false); locationType.SetKey(idProperty); model.AddEntityType(locationType); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(); builder.Entity <Category>(); var productType = model.GetEntityType(typeof(Product)); var categoryType = model.GetEntityType(typeof(Category)); categoryType.GetProperty("Id").ValueGenerationOnAdd = ValueGenerationOnAdd.None; productType.AddForeignKey(new Key(new[] { categoryType.GetProperty("PrincipalId") }), productType.GetProperty("DependentId")); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(); builder.Entity <Category>(); var categoryType = model.GetEntityType(typeof(Category)); var productType = model.GetEntityType(typeof(Product)); var categoryIdFk = productType.AddForeignKey(categoryType.GetKey(), productType.GetProperty("CategoryId")); categoryIdFk.StorageName = "Category_Products"; categoryType.AddNavigation(new Navigation(categoryIdFk, "Products")); productType.AddNavigation(new Navigation(categoryIdFk, "Category")); return(model); }
private static IModel BuildModel() { var model = new Model(); var builder = new ConventionModelBuilder(model); builder.Entity <Product>(); builder.Entity <Category>(); builder.Entity <Dogegory>(); var productType = model.GetEntityType(typeof(Product)); var categoryType = model.GetEntityType(typeof(Category)); productType.AddForeignKey(new Key(new[] { categoryType.GetProperty("PrincipalId") }), productType.GetProperty("DependentId")); var locationType = new EntityType("Location"); var idProperty = locationType.AddProperty("Id", typeof(int), shadowProperty: true, concurrencyToken: false); locationType.AddProperty("Planet", typeof(string), shadowProperty: true, concurrencyToken: false); locationType.SetKey(idProperty); model.AddEntityType(locationType); return(model); }
// TODO: convert to OnModelCreated public static ModelBuilder CreateModel() { var model = new Model(); var modelBuilder = new ConventionModelBuilder(model); // TODO: Uncomment when complex types are supported //builder.ComplexType<Location>(); modelBuilder.Entity <Chassis>(b => b.Key(c => c.TeamId)); modelBuilder.Entity <Driver>(b => { b.Key(d => d.Id); b.Property(d => d.CarNumber); b.Property(d => d.Championships); b.Property(d => d.FastestLaps); b.Property(d => d.Name); b.Property(d => d.Podiums); b.Property(d => d.Poles); b.Property(d => d.Races); b.Property(d => d.TeamId); b.Property(d => d.Wins); }); modelBuilder.Entity <Engine>(b => { b.Key(e => e.Id); b.OneToMany(e => e.Teams, e => e.Engine); b.OneToMany(e => e.Gearboxes); }); // TODO: Complex type // .Property(c => c.StorageLocation); modelBuilder.Entity <EngineSupplier>(b => { b.Key(e => e.Id); b.Property(e => e.Name); b.OneToMany(e => e.Engines, e => e.EngineSupplier); }); modelBuilder.Entity <Gearbox>(b => { b.Key(g => g.Id); b.Property(g => g.Name); b.Property <int>("EngineId", shadowProperty: true); }); // TODO: Complex type //builder // .ComplexType<Location>() // .Properties(ps => // { // // TODO: Use lambda expression // ps.Property<double>("Latitude", concurrencyToken: true); // // TODO: Use lambda expression // ps.Property<double>("Longitude", concurrencyToken: true); // }); modelBuilder.Entity <Sponsor>(b => { b.Key(s => s.Id); b.Property(s => s.Name); }); // TODO: Complex type //builder // .ComplexType<SponsorDetails>() // .Properties(ps => // { // ps.Property(s => s.Days); // ps.Property(s => s.Space); // }); modelBuilder.Entity <Team>(b => { b.Key(t => t.Id); b.Property(t => t.Constructor); b.Property(t => t.ConstructorsChampionships); b.Property(t => t.DriversChampionships); b.Property <int>("EngineId", shadowProperty: true); b.Property(t => t.FastestLaps); b.Property(t => t.GearboxId); b.Property(t => t.Name); b.Property(t => t.Poles); b.Property(t => t.Principal); b.Property(t => t.Races); b.Property(t => t.Tire); b.Property(t => t.Victories); b.OneToMany(e => e.Drivers, e => e.Team); b.OneToOne(e => e.Gearbox).ForeignKey <Team>(); }); modelBuilder.Entity <TestDriver>(b => b.Key(t => t.Id)); modelBuilder.Entity <TitleSponsor>(); // TODO: Complex type // .Property(t => t.Details); var chassisType = model.GetEntityType(typeof(Chassis)); var driverType = model.GetEntityType(typeof(Driver)); var engineType = model.GetEntityType(typeof(Engine)); var gearboxType = model.GetEntityType(typeof(Gearbox)); var teamType = model.GetEntityType(typeof(Team)); var sponsorType = model.GetEntityType(typeof(Sponsor)); // TODO: Sponsor * <-> * Team // TODO: Remove once temporary keys can be overridden teamType.GetProperty("Id").ValueGenerationOnAdd = ValueGenerationOnAdd.None; teamType.GetProperty("Id").ValueGenerationOnSave = ValueGenerationOnSave.None; // TODO: Remove when FAPI supports this teamType.GetProperty("EngineId").IsNullable = true; engineType.AddProperty("EngineSupplierId", typeof(int), shadowProperty: false, concurrencyToken: true); engineType.AddProperty("Name", typeof(string), shadowProperty: false, concurrencyToken: true); chassisType.AddProperty("Version", typeof(byte[]), shadowProperty: false, concurrencyToken: true) .ValueGenerationOnSave = ValueGenerationOnSave.WhenInsertingAndUpdating; driverType.AddProperty("Version", typeof(byte[]), shadowProperty: false, concurrencyToken: true) .ValueGenerationOnSave = ValueGenerationOnSave.WhenInsertingAndUpdating; teamType.AddProperty("Version", typeof(byte[]), shadowProperty: false, concurrencyToken: true) .ValueGenerationOnSave = ValueGenerationOnSave.WhenInsertingAndUpdating; sponsorType.AddProperty("Version", typeof(byte[]), shadowProperty: false, concurrencyToken: true) .ValueGenerationOnSave = ValueGenerationOnSave.WhenInsertingAndUpdating; return(modelBuilder); }