diff --git a/RadGridViewEFCodeFirst.Data/App.config b/RadGridViewEFCodeFirst.Data/App.config
index 4c09305..b02d3e9 100644
--- a/RadGridViewEFCodeFirst.Data/App.config
+++ b/RadGridViewEFCodeFirst.Data/App.config
@@ -11,6 +11,6 @@
-
+
\ No newline at end of file
diff --git a/RadGridViewEFCodeFirst.Data/Common/DataGenerator.cs b/RadGridViewEFCodeFirst.Data/Common/DataGenerator.cs
new file mode 100644
index 0000000..1db9a81
--- /dev/null
+++ b/RadGridViewEFCodeFirst.Data/Common/DataGenerator.cs
@@ -0,0 +1,51 @@
+using RadGridViewEFCodeFirst.Data.Contracts;
+using RadGridViewEFCodeFirst.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace RadGridViewEFCodeFirst.Data.Common
+{
+ public class DataGenerator
+ {
+ public static void PopulateData(IRadGridViewEFCodeFirstData data)
+ {
+ for (int i = 1; i <= 100; i++)
+ {
+ OrderType orderType = new OrderType()
+ {
+ OrderTypeId = i,
+ Description = "Test" + i
+ };
+
+ Order order = new Order()
+ {
+ OrderId = i,
+ Description = "Description" + i,
+ OrderTypeId = orderType.OrderTypeId
+ };
+
+ Shipper shipper = new Shipper()
+ {
+ ShipperId = i,
+ Name = "Name " + i,
+ OrderTypeId = orderType.OrderTypeId,
+ Address = "Address " + i,
+ };
+
+ data.OrderTypes.Add(orderType);
+ data.Orders.Add(order);
+ data.Shippers.Add(shipper);
+
+ if (i % 100 == 0)
+ {
+ data.SaveChanges();
+ }
+ }
+
+ data.SaveChanges();
+ }
+ }
+}
diff --git a/RadGridViewEFCodeFirst.Data/Contracts/IGenericRepository.cs b/RadGridViewEFCodeFirst.Data/Contracts/IGenericRepository.cs
index c03c352..52ca688 100644
--- a/RadGridViewEFCodeFirst.Data/Contracts/IGenericRepository.cs
+++ b/RadGridViewEFCodeFirst.Data/Contracts/IGenericRepository.cs
@@ -1,9 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
-using System.Text;
-using System.Threading.Tasks;
namespace RadGridViewEFCodeFirst.Data.Contracts
{
diff --git a/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstContext.cs b/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstContext.cs
index 919eef7..89d8636 100644
--- a/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstContext.cs
+++ b/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstContext.cs
@@ -1,11 +1,9 @@
-using RadGridViewEFCodeFirst.Models;
-using System;
-using System.Collections.Generic;
+using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+
+using RadGridViewEFCodeFirst.Models;
namespace RadGridViewEFCodeFirst.Data.Contracts
{
@@ -15,6 +13,8 @@ public interface IRadGridViewEFCodeFirstContext
IDbSet OrderTypes { get; set; }
+ IDbSet Shippers { get; set; }
+
IDbSet Set() where T : class;
DbEntityEntry Entry(T entity) where T : class;
diff --git a/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstData.cs b/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstData.cs
index a8d1445..8b2d5e2 100644
--- a/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstData.cs
+++ b/RadGridViewEFCodeFirst.Data/Contracts/IRadGridViewEFCodeFirstData.cs
@@ -1,9 +1,7 @@
-using RadGridViewEFCodeFirst.Models;
-using System;
-using System.Collections.Generic;
+using System;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+
+using RadGridViewEFCodeFirst.Models;
namespace RadGridViewEFCodeFirst.Data.Contracts
{
@@ -12,5 +10,9 @@ public interface IRadGridViewEFCodeFirstData
IGenericRepository Orders { get; }
IGenericRepository OrderTypes { get; }
+
+ IGenericRepository Shippers { get; }
+
+ void SaveChanges();
}
}
diff --git a/RadGridViewEFCodeFirst.Data/Migrations/Configuration.cs b/RadGridViewEFCodeFirst.Data/Migrations/Configuration.cs
index 4506322..81d8437 100644
--- a/RadGridViewEFCodeFirst.Data/Migrations/Configuration.cs
+++ b/RadGridViewEFCodeFirst.Data/Migrations/Configuration.cs
@@ -1,7 +1,6 @@
namespace RadGridViewEFCodeFirst.Data.Migrations
{
using System;
- using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
@@ -9,7 +8,6 @@ internal sealed class Configuration : DbMigrationsConfiguration
+
-
+
+ Code
+
-
+
diff --git a/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstContext.cs b/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstContext.cs
index 5b5e2e1..119e9b8 100644
--- a/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstContext.cs
+++ b/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstContext.cs
@@ -1,12 +1,10 @@
-using RadGridViewEFCodeFirst.Data.Contracts;
-using RadGridViewEFCodeFirst.Data.Migrations;
-using RadGridViewEFCodeFirst.Models;
-using System;
-using System.Collections.Generic;
+using System;
using System.Data.Entity;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+
+using RadGridViewEFCodeFirst.Data.Contracts;
+using RadGridViewEFCodeFirst.Data.Migrations;
+using RadGridViewEFCodeFirst.Models;
namespace RadGridViewEFCodeFirst.Data
{
@@ -19,10 +17,11 @@ public RadGridViewEFCodeFirstContext()
}
public IDbSet Orders { get; set; }
-
public IDbSet OrderTypes { get; set; }
+ public IDbSet Shippers { get; set; }
+
public new IDbSet Set() where T : class
{
return base.Set();
diff --git a/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstData.cs b/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstData.cs
index 9be92dd..d6f4848 100644
--- a/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstData.cs
+++ b/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstData.cs
@@ -1,11 +1,9 @@
-using RadGridViewEFCodeFirst.Data.Contracts;
-using RadGridViewEFCodeFirst.Data.Repositories;
-using RadGridViewEFCodeFirst.Models;
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+
+using RadGridViewEFCodeFirst.Data.Contracts;
+using RadGridViewEFCodeFirst.Models;
namespace RadGridViewEFCodeFirst.Data
{
@@ -41,6 +39,14 @@ public IGenericRepository OrderTypes
}
}
+ public IGenericRepository Shippers
+ {
+ get
+ {
+ return this.GetRepository();
+ }
+ }
+
public void SaveChanges()
{
this.context.SaveChanges();
@@ -51,8 +57,7 @@ private IGenericRepository GetRepository() where T : class
var typeOfModel = typeof(T);
if (!this.repositories.ContainsKey(typeOfModel))
{
- var type = typeof(GenericRepository);
-
+ Type type = typeof(RadGridViewEFCodeFirstRepository);
this.repositories.Add(typeOfModel, Activator.CreateInstance(type, this.context));
}
diff --git a/RadGridViewEFCodeFirst.Data/Repositories/GenericRepository.cs b/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstRepository.cs
similarity index 80%
rename from RadGridViewEFCodeFirst.Data/Repositories/GenericRepository.cs
rename to RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstRepository.cs
index f5e450e..724fc61 100644
--- a/RadGridViewEFCodeFirst.Data/Repositories/GenericRepository.cs
+++ b/RadGridViewEFCodeFirst.Data/RadGridViewEFCodeFirstRepository.cs
@@ -1,21 +1,19 @@
-using RadGridViewEFCodeFirst.Data.Contracts;
-using System;
-using System.Collections.Generic;
+using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Linq.Expressions;
-using System.Text;
-using System.Threading.Tasks;
-namespace RadGridViewEFCodeFirst.Data.Repositories
+using RadGridViewEFCodeFirst.Data.Contracts;
+
+namespace RadGridViewEFCodeFirst.Data
{
- public class GenericRepository : IGenericRepository where T : class
+ public class RadGridViewEFCodeFirstRepository : IGenericRepository where T : class
{
private IRadGridViewEFCodeFirstContext context;
private IDbSet set;
- public GenericRepository(IRadGridViewEFCodeFirstContext context)
+ public RadGridViewEFCodeFirstRepository(IRadGridViewEFCodeFirstContext context)
{
this.context = context;
this.set = context.Set();
diff --git a/RadGridViewEFCodeFirst.Models/App.config b/RadGridViewEFCodeFirst.Models/App.config
index 4c09305..b02d3e9 100644
--- a/RadGridViewEFCodeFirst.Models/App.config
+++ b/RadGridViewEFCodeFirst.Models/App.config
@@ -11,6 +11,6 @@
-
+
\ No newline at end of file
diff --git a/RadGridViewEFCodeFirst.Models/Order.cs b/RadGridViewEFCodeFirst.Models/Order.cs
index a95bf21..1f8a804 100644
--- a/RadGridViewEFCodeFirst.Models/Order.cs
+++ b/RadGridViewEFCodeFirst.Models/Order.cs
@@ -1,8 +1,5 @@
using System;
-using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace RadGridViewEFCodeFirst.Models
{
diff --git a/RadGridViewEFCodeFirst.Models/OrderType.cs b/RadGridViewEFCodeFirst.Models/OrderType.cs
index 8839a4f..f34228d 100644
--- a/RadGridViewEFCodeFirst.Models/OrderType.cs
+++ b/RadGridViewEFCodeFirst.Models/OrderType.cs
@@ -9,10 +9,12 @@ namespace RadGridViewEFCodeFirst.Models
public class OrderType
{
private ICollection orders;
+ private ICollection shippers;
public OrderType()
{
this.orders = new HashSet();
+ this.shippers = new HashSet();
}
public int OrderTypeId { get; set; }
@@ -29,6 +31,18 @@ public virtual ICollection Orders
}
}
+ public virtual ICollection Shippers
+ {
+ get
+ {
+ return this.shippers;
+ }
+ set
+ {
+ this.shippers = value;
+ }
+ }
+
public string Description { get; set; }
}
}
diff --git a/RadGridViewEFCodeFirst.Models/RadGridViewEFCodeFirst.Models.csproj b/RadGridViewEFCodeFirst.Models/RadGridViewEFCodeFirst.Models.csproj
index fab1143..c80e3ce 100644
--- a/RadGridViewEFCodeFirst.Models/RadGridViewEFCodeFirst.Models.csproj
+++ b/RadGridViewEFCodeFirst.Models/RadGridViewEFCodeFirst.Models.csproj
@@ -51,11 +51,10 @@
+
-
- Designer
-
+
diff --git a/RadGridViewEFCodeFirst.WinFormsClient/App.config b/RadGridViewEFCodeFirst.WinFormsClient/App.config
index d6d41a5..08fcdcf 100644
--- a/RadGridViewEFCodeFirst.WinFormsClient/App.config
+++ b/RadGridViewEFCodeFirst.WinFormsClient/App.config
@@ -14,6 +14,6 @@
-
+
\ No newline at end of file
diff --git a/RadGridViewEFCodeFirst.WinFormsClient/Form1.cs b/RadGridViewEFCodeFirst.WinFormsClient/Form1.cs
index 8fb7b3f..ffeffd5 100644
--- a/RadGridViewEFCodeFirst.WinFormsClient/Form1.cs
+++ b/RadGridViewEFCodeFirst.WinFormsClient/Form1.cs
@@ -1,72 +1,79 @@
-using RadGridViewEFCodeFirst.Data;
-using RadGridViewEFCodeFirst.Models;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Entity.Infrastructure;
-using System.Drawing;
+using System;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Windows.Forms;
+using System.Data.Entity;
+
using Telerik.WinControls.UI;
+using RadGridViewEFCodeFirst.Data;
+using RadGridViewEFCodeFirst.Models;
+using RadGridViewEFCodeFirst.Data.Contracts;
+using RadGridViewEFCodeFirst.Data.Common;
+using System.ComponentModel;
+using System.Collections.Generic;
+
namespace RadGridViewEFCodeFirst.WinFormsClient
{
public partial class Form1 : Form
{
- private RadGridViewEFCodeFirstData data;
+ private IRadGridViewEFCodeFirstData data;
public Form1()
{
InitializeComponent();
this.data = new RadGridViewEFCodeFirstData();
- //Uncomment to load data
- //this.PopulateData();
+ if (!data.OrderTypes.All().Any() || !data.Orders.All().Any() || !data.Shippers.All().Any())
+ {
+ DataGenerator.PopulateData(this.data);
+ }
+
this.SetUpGrid();
+ this.FormClosing += Form1_FormClosing;
}
- private void SetUpGrid()
+ private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
- GridViewComboBoxColumn orderTypeColumn = new GridViewComboBoxColumn();
- orderTypeColumn.Name = "OrderTypeColumn";
- orderTypeColumn.HeaderText = "OrderType";
- orderTypeColumn.DataSource = this.data.OrderTypes.All().ToList();
- orderTypeColumn.ValueMember = "Description";
- orderTypeColumn.DisplayMember = "Description";
- orderTypeColumn.FieldName = "Orders";
- orderTypeColumn.Width = 200;
- this.radGridView1.Columns.Add(orderTypeColumn);
+ this.data.SaveChanges();
}
- private void PopulateData()
+ private void SetUpGrid()
{
- for (int i = 1; i <= 100; i++)
- {
- OrderType orderType = new OrderType()
- {
- OrderTypeId = i,
- Description = "Test" + i
- };
+ ((IDbSet)this.data.OrderTypes.All()).Load();
+ this.radGridView1.DataSource = ((IDbSet)this.data.OrderTypes.All()).Local.ToBindingList();
+ this.radGridView1.Columns["Orders"].IsVisible = false;
+ this.radGridView1.Columns["Shippers"].IsVisible = false;
+ this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
- this.data.OrderTypes.Add(orderType);
+ GridViewTemplate ordersTemplate = new GridViewTemplate();
+ ordersTemplate.Caption = "Orders";
+ radGridView1.MasterTemplate.Templates.Add(ordersTemplate);
+ ((IDbSet)this.data.Orders.All()).Load();
+ ordersTemplate.DataSource = ((IDbSet)this.data.Orders.All()).Local.ToBindingList();
+ ordersTemplate.Columns["OrderType"].IsVisible = false;
+ ordersTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
- Order order = new Order()
- {
- OrderId = i,
- Description = "Description" + i,
- OrderTypeId = orderType.OrderTypeId
- };
+ GridViewRelation relation = new GridViewRelation(radGridView1.MasterTemplate);
+ relation.ChildTemplate = ordersTemplate;
+ relation.RelationName = "OrderTypesOrders";
+ relation.ParentColumnNames.Add("OrderTypeId");
+ relation.ChildColumnNames.Add("OrderTypeId");
+ radGridView1.Relations.Add(relation);
- this.data.Orders.Add(order);
+ GridViewTemplate shippersTemplate = new GridViewTemplate();
+ shippersTemplate.Caption = "Shippers";
+ radGridView1.MasterTemplate.Templates.Add(shippersTemplate);
+ ((IDbSet)this.data.Shippers.All()).Load();
+ shippersTemplate.DataSource = ((IDbSet)this.data.Shippers.All()).Local.ToBindingList();
+ shippersTemplate.Columns["OrderType"].IsVisible = false;
+ shippersTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
- if (i % 10 == 0)
- {
- this.data.SaveChanges();
- }
- }
+ GridViewRelation relation2 = new GridViewRelation(radGridView1.MasterTemplate);
+ relation2.ChildTemplate = shippersTemplate;
+ relation2.RelationName = "OrderTypesShippers";
+ relation2.ParentColumnNames.Add("OrderTypeId");
+ relation2.ChildColumnNames.Add("OrderTypeId");
+ radGridView1.Relations.Add(relation2);
}
}
}
diff --git a/RadGridViewEFCodeFirst.WinFormsClient/Program.cs b/RadGridViewEFCodeFirst.WinFormsClient/Program.cs
index 00efc21..46034ab 100644
--- a/RadGridViewEFCodeFirst.WinFormsClient/Program.cs
+++ b/RadGridViewEFCodeFirst.WinFormsClient/Program.cs
@@ -1,7 +1,5 @@
using System;
-using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
using System.Windows.Forms;
namespace RadGridViewEFCodeFirst.WinFormsClient
diff --git a/RadGridViewEFCodeFirst.WinFormsClient/RadGridViewEFCodeFirst.WinFormsClient.csproj b/RadGridViewEFCodeFirst.WinFormsClient/RadGridViewEFCodeFirst.WinFormsClient.csproj
index 052e984..313c027 100644
--- a/RadGridViewEFCodeFirst.WinFormsClient/RadGridViewEFCodeFirst.WinFormsClient.csproj
+++ b/RadGridViewEFCodeFirst.WinFormsClient/RadGridViewEFCodeFirst.WinFormsClient.csproj
@@ -51,11 +51,22 @@
-
-
-
-
-
+
+ False
+ D:\DLLs\Telerik_UI_For_WinForms_2015_2_728_Dev_dlls\Bin40\Telerik.WinControls.dll
+
+
+ False
+ D:\DLLs\Telerik_UI_For_WinForms_2015_2_728_Dev_dlls\Bin40\Telerik.WinControls.GridView.dll
+
+
+ False
+ D:\DLLs\Telerik_UI_For_WinForms_2015_2_728_Dev_dlls\Bin40\Telerik.WinControls.UI.dll
+
+
+ False
+ D:\DLLs\Telerik_UI_For_WinForms_2015_2_728_Dev_dlls\Bin40\TelerikCommon.dll
+