Dear All,
I have seen many project those using Code first and using DI with Autofac IoC . My point is im upgrading or rewritten my monolithic application to new pattern like DI , IoC and plugin so study many projects like NOPnopcommerce etc. But my limitation is i have to use my existing db and use DB first approach. so i convert one application and use DB first and with Autofac , and create one db Model and create one manually interface and register but problem is every time db model update then every time have to inherit the Interface to DB model like MyDbContext :DbContext, IMyDbContext so every time have update with Interface. so i have to solve this one problem .
next i have google and getting db first approach but they using new keyword and create a object which is i already handle by Autofac.
publicclass Customer
{
DIDbContext dbContext = new DIDbContext();publicint Create(Customer customer)
{if (customer != null)
{
dbContext.Customers.Add(customer);
dbContext.SaveChanges();return1;
}return0;
}public IEnumerable<customer> GetAllCustomers()
{return dbContext.Customers.ToList();
}
}
so i dont want to create new object every time which is alredy handle by Autofac.
so please give me some idea with DB first and without new object in every repository.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Repository_Database
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Core.Objects;
using System.Linq;
public partial class Northwind_DBEntities : DbContext, Repository_Database.INorthwind_DBEntities
{
public Northwind_DBEntities()
: base("name=Northwind_DBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<CustomerDemographic> CustomerDemographics { get; set; }
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<Employee> Employees { get; set; }
public virtual DbSet<Order_Detail> Order_Details { get; set; }
public virtual DbSet<Order> Orders { get; set; }
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<Region> Regions { get; set; }
public virtual DbSet<Shipper> Shippers { get; set; }
public virtual DbSet<Supplier> Suppliers { get; set; }
public virtual DbSet<sysdiagram> sysdiagrams { get; set; }
public virtual DbSet<Territory> Territories { get; set; }
public virtual DbSet<Alphabetical_list_of_product> Alphabetical_list_of_products { get; set; }
public virtual DbSet<Category_Sales_for_1997> Category_Sales_for_1997 { get; set; }
public virtual DbSet<Current_Product_List> Current_Product_Lists { get; set; }
public virtual DbSet<Customer_and_Suppliers_by_City> Customer_and_Suppliers_by_Cities { get; set; }
public virtual DbSet<Invoice> Invoices { get; set; }
public virtual DbSet<Order_Details_Extended> Order_Details_Extendeds { get; set; }
public virtual DbSet<Order_Subtotal> Order_Subtotals { get; set; }
public virtual DbSet<Orders_Qry> Orders_Qries { get; set; }
public virtual DbSet<Product_Sales_for_1997> Product_Sales_for_1997 { get; set; }
public virtual DbSet<Products_Above_Average_Price> Products_Above_Average_Prices { get; set; }
public virtual DbSet<Products_by_Category> Products_by_Categories { get; set; }
public virtual DbSet<Sales_by_Category> Sales_by_Categories { get; set; }
public virtual DbSet<Sales_Totals_by_Amount> Sales_Totals_by_Amounts { get; set; }
public virtual DbSet<Summary_of_Sales_by_Quarter> Summary_of_Sales_by_Quarters { get; set; }
public virtual DbSet<Summary_of_Sales_by_Year> Summary_of_Sales_by_Years { get; set; }
public virtual ObjectResult<CustOrderHist_Result> CustOrderHist(string customerID)
{
var customerIDParameter = customerID != null ?
new ObjectParameter("CustomerID", customerID) :
new ObjectParameter("CustomerID", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<CustOrderHist_Result>("CustOrderHist", customerIDParameter);
}
public virtual ObjectResult<CustOrdersDetail_Result> CustOrdersDetail(Nullable<int> orderID)
{
var orderIDParameter = orderID.HasValue ?
new ObjectParameter("OrderID", orderID) :
new ObjectParameter("OrderID", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<CustOrdersDetail_Result>("CustOrdersDetail", orderIDParameter);
}
public virtual ObjectResult<CustOrdersOrders_Result> CustOrdersOrders(string customerID)
{
var customerIDParameter = customerID != null ?
new ObjectParameter("CustomerID", customerID) :
new ObjectParameter("CustomerID", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<CustOrdersOrders_Result>("CustOrdersOrders", customerIDParameter);
}
public virtual ObjectResult<Employee_Sales_by_Country_Result> Employee_Sales_by_Country(Nullable<System.DateTime> beginning_Date, Nullable<System.DateTime> ending_Date)
{
var beginning_DateParameter = beginning_Date.HasValue ?
new ObjectParameter("Beginning_Date", beginning_Date) :
new ObjectParameter("Beginning_Date", typeof(System.DateTime));
var ending_DateParameter = ending_Date.HasValue ?
new ObjectParameter("Ending_Date", ending_Date) :
new ObjectParameter("Ending_Date", typeof(System.DateTime));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Employee_Sales_by_Country_Result>("Employee_Sales_by_Country", beginning_DateParameter, ending_DateParameter);
}
public virtual ObjectResult<Sales_by_Year_Result> Sales_by_Year(Nullable<System.DateTime> beginning_Date, Nullable<System.DateTime> ending_Date)
{
var beginning_DateParameter = beginning_Date.HasValue ?
new ObjectParameter("Beginning_Date", beginning_Date) :
new ObjectParameter("Beginning_Date", typeof(System.DateTime));
var ending_DateParameter = ending_Date.HasValue ?
new ObjectParameter("Ending_Date", ending_Date) :
new ObjectParameter("Ending_Date", typeof(System.DateTime));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Sales_by_Year_Result>("Sales_by_Year", beginning_DateParameter, ending_DateParameter);
}
public virtual ObjectResult<SalesByCategory_Result> SalesByCategory(string categoryName, string ordYear)
{
var categoryNameParameter = categoryName != null ?
new ObjectParameter("CategoryName", categoryName) :
new ObjectParameter("CategoryName", typeof(string));
var ordYearParameter = ordYear != null ?
new ObjectParameter("OrdYear", ordYear) :
new ObjectParameter("OrdYear", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<SalesByCategory_Result>("SalesByCategory", categoryNameParameter, ordYearParameter);
}
public virtual int sp_alterdiagram(string diagramname, Nullable<int> owner_id, Nullable<int> version, byte[] definition)
{
var diagramnameParameter = diagramname != null ?
new ObjectParameter("diagramname", diagramname) :
new ObjectParameter("diagramname", typeof(string));
var owner_idParameter = owner_id.HasValue ?
new ObjectParameter("owner_id", owner_id) :
new ObjectParameter("owner_id", typeof(int));
var versionParameter = version.HasValue ?
new ObjectParameter("version", version) :
new ObjectParameter("version", typeof(int));
var definitionParameter = definition != null ?
new ObjectParameter("definition", definition) :
new ObjectParameter("definition", typeof(byte[]));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_alterdiagram", diagramnameParameter, owner_idParameter, versionParameter, definitionParameter);
}
public virtual int sp_creatediagram(string diagramname, Nullable<int> owner_id, Nullable<int> version, byte[] definition)
{
var diagramnameParameter = diagramname != null ?
new ObjectParameter("diagramname", diagramname) :
new ObjectParameter("diagramname", typeof(string));
var owner_idParameter = owner_id.HasValue ?
new ObjectParameter("owner_id", owner_id) :
new ObjectParameter("owner_id", typeof(int));
var versionParameter = version.HasValue ?
new ObjectParameter("version", version) :
new ObjectParameter("version", typeof(int));
var definitionParameter = definition != null ?
new ObjectParameter("definition", definition) :
new ObjectParameter("definition", typeof(byte[]));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_creatediagram", diagramnameParameter, owner_idParameter, versionParameter, definitionParameter);
}
public virtual int sp_dropdiagram(string diagramname, Nullable<int> owner_id)
{
var diagramnameParameter = diagramname != null ?
new ObjectParameter("diagramname", diagramname) :
new ObjectParameter("diagramname", typeof(string));
var owner_idParameter = owner_id.HasValue ?
new ObjectParameter("owner_id", owner_id) :
new ObjectParameter("owner_id", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_dropdiagram", diagramnameParameter, owner_idParameter);
}
public virtual ObjectResult<sp_helpdiagramdefinition_Result> sp_helpdiagramdefinition(string diagramname, Nullable<int> owner_id)
{
var diagramnameParameter = diagramname != null ?
new ObjectParameter("diagramname", diagramname) :
new ObjectParameter("diagramname", typeof(string));
var owner_idParameter = owner_id.HasValue ?
new ObjectParameter("owner_id", owner_id) :
new ObjectParameter("owner_id", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sp_helpdiagramdefinition_Result>("sp_helpdiagramdefinition", diagramnameParameter, owner_idParameter);
}
public virtual ObjectResult<sp_helpdiagrams_Result> sp_helpdiagrams(string diagramname, Nullable<int> owner_id)
{
var diagramnameParameter = diagramname != null ?
new ObjectParameter("diagramname", diagramname) :
new ObjectParameter("diagramname", typeof(string));
var owner_idParameter = owner_id.HasValue ?
new ObjectParameter("owner_id", owner_id) :
new ObjectParameter("owner_id", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sp_helpdiagrams_Result>("sp_helpdiagrams", diagramnameParameter, owner_idParameter);
}
public virtual int sp_renamediagram(string diagramname, Nullable<int> owner_id, string new_diagramname)
{
var diagramnameParameter = diagramname != null ?
new ObjectParameter("diagramname", diagramname) :
new ObjectParameter("diagramname", typeof(string));
var owner_idParameter = owner_id.HasValue ?
new ObjectParameter("owner_id", owner_id) :
new ObjectParameter("owner_id", typeof(int));
var new_diagramnameParameter = new_diagramname != null ?
new ObjectParameter("new_diagramname", new_diagramname) :
new ObjectParameter("new_diagramname", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_renamediagram", diagramnameParameter, owner_idParameter, new_diagramnameParameter);
}
public virtual int sp_upgraddiagrams()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_upgraddiagrams");
}
public virtual ObjectResult<Ten_Most_Expensive_Products_Result> Ten_Most_Expensive_Products()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Ten_Most_Expensive_Products_Result>("Ten_Most_Expensive_Products");
}
public override int SaveChanges()
{
return base.SaveChanges();
}
}
}
using System;
namespace Repository_Database
{
public interface INorthwind_DBEntities
{
System.Data.Entity.DbSet<Alphabetical_list_of_product> Alphabetical_list_of_products { get; set; }
System.Data.Entity.DbSet<Category> Categories { get; set; }
System.Data.Entity.DbSet<Category_Sales_for_1997> Category_Sales_for_1997 { get; set; }
System.Data.Entity.DbSet<Current_Product_List> Current_Product_Lists { get; set; }
System.Data.Entity.DbSet<Customer_and_Suppliers_by_City> Customer_and_Suppliers_by_Cities { get; set; }
System.Data.Entity.DbSet<CustomerDemographic> CustomerDemographics { get; set; }
System.Data.Entity.DbSet<Customer> Customers { get; set; }
System.Data.Entity.Core.Objects.ObjectResult<CustOrderHist_Result> CustOrderHist(string customerID);
System.Data.Entity.Core.Objects.ObjectResult<CustOrdersDetail_Result> CustOrdersDetail(int? orderID);
System.Data.Entity.Core.Objects.ObjectResult<CustOrdersOrders_Result> CustOrdersOrders(string customerID);
System.Data.Entity.Core.Objects.ObjectResult<Employee_Sales_by_Country_Result> Employee_Sales_by_Country(DateTime? beginning_Date, DateTime? ending_Date);
System.Data.Entity.DbSet<Employee> Employees { get; set; }
System.Data.Entity.DbSet<Invoice> Invoices { get; set; }
System.Data.Entity.DbSet<Order_Detail> Order_Details { get; set; }
System.Data.Entity.DbSet<Order_Details_Extended> Order_Details_Extendeds { get; set; }
System.Data.Entity.DbSet<Order_Subtotal> Order_Subtotals { get; set; }
System.Data.Entity.DbSet<Order> Orders { get; set; }
System.Data.Entity.DbSet<Orders_Qry> Orders_Qries { get; set; }
System.Data.Entity.DbSet<Product_Sales_for_1997> Product_Sales_for_1997 { get; set; }
System.Data.Entity.DbSet<Product> Products { get; set; }
System.Data.Entity.DbSet<Products_Above_Average_Price> Products_Above_Average_Prices { get; set; }
System.Data.Entity.DbSet<Products_by_Category> Products_by_Categories { get; set; }
System.Data.Entity.DbSet<Region> Regions { get; set; }
System.Data.Entity.DbSet<Sales_by_Category> Sales_by_Categories { get; set; }
System.Data.Entity.Core.Objects.ObjectResult<Sales_by_Year_Result> Sales_by_Year(DateTime? beginning_Date, DateTime? ending_Date);
System.Data.Entity.DbSet<Sales_Totals_by_Amount> Sales_Totals_by_Amounts { get; set; }
System.Data.Entity.Core.Objects.ObjectResult<SalesByCategory_Result> SalesByCategory(string categoryName, string ordYear);
int SaveChanges();
System.Data.Entity.DbSet<Shipper> Shippers { get; set; }
int sp_alterdiagram(string diagramname, int? owner_id, int? version, byte[] definition);
int sp_creatediagram(string diagramname, int? owner_id, int? version, byte[] definition);
int sp_dropdiagram(string diagramname, int? owner_id);
System.Data.Entity.Core.Objects.ObjectResult<sp_helpdiagramdefinition_Result> sp_helpdiagramdefinition(string diagramname, int? owner_id);
System.Data.Entity.Core.Objects.ObjectResult<sp_helpdiagrams_Result> sp_helpdiagrams(string diagramname, int? owner_id);
int sp_renamediagram(string diagramname, int? owner_id, string new_diagramname);
int sp_upgraddiagrams();
System.Data.Entity.DbSet<Summary_of_Sales_by_Quarter> Summary_of_Sales_by_Quarters { get; set; }
System.Data.Entity.DbSet<Summary_of_Sales_by_Year> Summary_of_Sales_by_Years { get; set; }
System.Data.Entity.DbSet<Supplier> Suppliers { get; set; }
System.Data.Entity.DbSet<sysdiagram> sysdiagrams { get; set; }
System.Data.Entity.Core.Objects.ObjectResult<Ten_Most_Expensive_Products_Result> Ten_Most_Expensive_Products();
System.Data.Entity.DbSet<Territory> Territories { get; set; }
}
}
but when update model from DB i have again add interface to Model so how i reduce this manually work.
and Unit of work also
Thanks
Dharmesh