2016-08-24 27 views
0

我已經使用存儲庫& DI方法創建了MVC Web應用程序。我也使用了Code First方法。使用DataContext文件和webConfig文件將Web應用程序與localdb連接問題

這裏是我的DataContext文件:

namespace EfRepPatTest.Data 
{ 
    public class DataContext : DbContext, IDbContext 
    { 
     public new IDbSet<TEntity> Set<TEntity>() where TEntity: class 
     { 
      return base.Set<TEntity>(); 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      var typesToRegister = Assembly.GetExecutingAssembly().GetTypes() 
      .Where(type => !String.IsNullOrEmpty(type.Namespace)) 
      .Where(type => type.BaseType != null && type.BaseType.IsGenericType && 
       type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>)); 
      foreach (var type in typesToRegister) 
      { 
       dynamic configurationInstance = Activator.CreateInstance(type); 
       modelBuilder.Configurations.Add(configurationInstance); 
      } 

      base.OnModelCreating(modelBuilder); 
     } 

    } 
} 

我已經定義在Web.Config文件連接字符串象下面這樣:

<add name="DataContext" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\eCommerce.mdf;Integrated Security=True" 
    providerName="System.Data.SqlClient" 
/> 

請注意,我在這裏提到同一名稱的連接字符串和我的上下文文件。

這是帖子的方法:

[HttpPost] 
     public ActionResult Create(CategoryModel model)//FormCollection collection 
     { 
      try 
      { 
       // TODO: Add insert logic here 
       if (model == null) 
        return View(model); 

       var category = new Category(); 
       category.Name = model.Name; 

       categoryService.Insert(category); 

       return RedirectToAction("Index"); 
      } 
      catch 
      { 
       return View(model); 
      } 
     } 

CategoryService:

public class CategoryService : ICategoryService 
    { 
     private IRepository<Category> _categoryRepository; 

     public CategoryService(IRepository<Category> categoryRepository) 
     { 
      this._categoryRepository = categoryRepository; 
     } 

    public void Insert(Category category) 
      { 
       if (category == null) 
        throw new ArgumentNullException("Category"); 

       _categoryRepository.Insert(category); 
      } 

} 

RepositoryService:

public class RepositoryService<TEntity> : IRepository<TEntity> where TEntity: class 
    { 
     private IDbContext _context; 

     private IDbSet<TEntity> Entities 
     { 
      get { return this._context.Set<TEntity>(); } 
     } 

     public RepositoryService(IDbContext context) 
     { 
      this._context = context; 
     } 


     public void Insert(TEntity entity) 
     { 
      Entities.Add(entity); 
     } 
} 

當我在第一次運行的應用程序將CRE吃了當地的分貝。但是當我要插入數據時,我沒有從應用程序中得到任何錯誤,也沒有將我的數據插入到數據庫中。

這是什麼原因造成的?我在這裏做錯了什麼?

任何幫助表示讚賞!

+0

顯示的代碼插入數據 –

+0

更新問題 – Ankita

+0

什麼是'categoryService'這樣所有更改後呼籲_contextSaveChanges()? –

回答

2

你應該爲前:

public void Insert(TEntity entity) 
{ 
    Entities.Add(entity); 
    _context.SaveChanges(); 
} 
+0

謝謝,它的作品。 – Ankita

+0

我是否也需要爲Delete方法執行它? – Ankita

+0

是的,也爲改變。 –

相關問題