2015-12-26 85 views
0

我是新来的MVC,我已经创建的数据库,我们生成一个名为HRContextEntities的ADO实体数据模型后,我们只创建一个bankviewmodel及其库和索引视图来显示数据库银行在一个列表:MVC数据库优先无法设置数据库初始化

语境

public partial class HRContextEntities : DbContext 
    { 
     public HRContextEntities() 
      : base("name=HRContextEntities") 
     { 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      throw new UnintentionalCodeFirstException(); 
     } 

     public virtual DbSet<ACTIONS> ACTIONS { get; set; } 
     public virtual DbSet<BANKS> BANKS { get; set; } 
     public virtual DbSet<EMP_ALAWA> EMP_ALAWA { get; set; } 
     public virtual DbSet<EMP_CARDS> EMP_CARDS { get; set; } 
     public virtual DbSet<EMP_DAORA> EMP_DAORA { get; set; } 
     public virtual DbSet<EMP_DEGREES> EMP_DEGREES { get; set; } 
     public virtual DbSet<EMP_DEGREES_WORKERS> EMP_DEGREES_WORKERS { get; set; } 
     public virtual DbSet<EMP_DISSENT> EMP_DISSENT { get; set; } 
     public virtual DbSet<EMP_EMPLOYEES> EMP_EMPLOYEES { get; set; } 
     public virtual DbSet<EMP_ENDEMP> EMP_ENDEMP { get; set; } 
     public virtual DbSet<EMP_ENTEDAB> EMP_ENTEDAB { get; set; } 
     public virtual DbSet<EMP_EQRAR> EMP_EQRAR { get; set; } 
     public virtual DbSet<EMP_HASMIAT> EMP_HASMIAT { get; set; } 
     public virtual DbSet<EMP_HOLIDAYS> EMP_HOLIDAYS { get; set; } 
     public virtual DbSet<EMP_JOBS> EMP_JOBS { get; set; } 
     ............................... 

银行视图模型

public class BankViewModel 
{ 
    public decimal BankID { get; set; } 
    public string BankName { get; set; } 
    public string BankSymbol { get; set; } 
} 

银行库类:

public class BankRepository 
{ 
    HRContextEntities db = new HRContextEntities(); 
    public BankViewModel[] GetAll(int? take, int? skip) 
    { 
     return db.BANKS.Select(s => new BankViewModel { BankID = s.ID, BankName = s.NAME }) 
      .OrderBy(s => s.BankID).Skip(skip != null ? skip.Value : 0) 
      .Take(take != null ? take.Value : int.MaxValue).ToArray(); 
    } 
} 

_Banks从局部视图

@model IEnumerable<HumanResourceManagement.Models.BankViewModel> 
@foreach (var item in Model) 
{ 
    <tr class="odd gradeX"> 

    <td> 
     @item.BankID 
    </td> 
    <td> 
     @item.BankName 
    </td> 
    <td> 
     RYD 
    </td> 
</tr> 
} 

异常

Additional information: Failed to set database initializer of type 'MyProject.Context.Config.ContextInitializer, MyProject.Context' for DbContext type 'App.Context.Default, App.Context' specified in the application configuration. See inner exception for details.

的web.config

<contexts> 
     <context type="App.Context.Default, App.Context"> 
     <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" /> 
     <!--<databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" />--> 

     </context> 
    </contexts> 

所以什么是此异常的解决方案

+0

[与EF6错误装载数据库初始化](HTTP的可能重复: //stackoverflow.com/questions/24542605/error-loading-database-initializer-with-ef6) – jpgrassi

回答

0

我觉得你的问题就出在你的web.config文件:

<contexts> 
    <context type="App.Context.Default, App.Context"> 
     <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" />     
    </context> 
</contexts> 

context type指定完全合格上下文类的名称,它是在组件和databaseinitializer类型指定的初始化类,它是在组装的全名。Read this for more info

基本上,上下文类型AND databaseinitializer的第二个参数应该是项目组合,而不是上下文。因此,它应该遵循这个模式:

<context type=" Blogging.BlogContext, MyAssembly"> 
    <databaseInitializer type="Blogging.MyCustomBlogInitializer, MyAssembly" /> 
</context> 

因此,在你的代码,试试这个(我想你的程序集是MyProject的):

<contexts> 
    <context type="MyProject.App.Context, MyProject"> 
     <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject" />     
    </context> 
</contexts>