2015-09-22 66 views
0

复数化表名,我有以下控制器:的DbContext在访问DB

private RACentralContext db = new RACentralContext(); 
private PeopleContext Peopledb = new PeopleContext();   

public ViewResult StartRA() 
    { 
     var assessor = Peopledb.People.FirstOrDefault(x => x.PersonId == 6); 


     StartRiskAssessmentViewModel viewModel = new StartRiskAssessmentViewModel 
     { 
      RiskAssessment = new RiskAssessment(), 
     }; 

     return View(viewModel); 
    } 

当我运行它提供了以下错误的应用程序:

'Invalid object name 'dbo.People'

上下文类是:

public class RACentralContext : DbContext 
{ 

    public RACentralContext() 
     : base("name=RACDev") 
    { 
    } 

    public DbSet<RiskAssessment> RiskAssessments { get; set; } 
    public DbSet<Hazard> Hazards { get; set; } 
    public DbSet<PPE> PPEs { get; set; } 
    public DbSet<RiskAssessmentPPE> RiskAssessmentPPEs { get; set; } 
    public DbSet<PeopleExposed> PeopleExposeds { get; set; } 
    public DbSet<RiskAssessmentPeopleExposed> RiskAssessmentPeopleExposeds { get; set; } 
    public DbSet<RiskAssessmentHazard> RiskAssessmentHazards { get; set; } 
    public DbSet<ControlMeasure> ControlMeasures { get; set; } 
    public DbSet<Severity> Severitys { get; set; } 
    public DbSet<Likelihood> Likelihoods { get; set; } 
    public DbSet<AddControlMeasure> AddControlMeasures { get; set; } 
    public DbSet<Type> Types { get; set; } 
    public DbSet<SubType> SubTypes { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 
} 

public class PeopleContext : DbContext 
{ 
    public PeopleContext() 
     : base("name=PeopleContext") 
    { 

    } 

    public DbSet<Person> People { get; set; } 

} 

它试图访问实际的表名称的puralization,我该如何阻止它做到这一点,只是得到它访问dbo.Person不dbo.People?

+0

表名添加一个'覆盖无效OnModelCreating()''来... PeopleContext' – CodeCaster

+0

Hvaing补充说,我得到这个错误:该模型支持的“PeopleContext自数据库创建以来,上下文已发生变化。考虑使用Code First Migrations来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。尽管运行update-database-force。 People上下文只有一个来自该数据库的表,而不是我在另一个应用程序中使用的所有表 –

回答

0

我们指定的模型本身

[Table("Person")] 
public class Person { ... } 
+0

现在出现此错误:自创建数据库以来,支持'PeopleContext'上下文的模型已更改。考虑使用代码优先迁移来更新数据库 –

+0

您需要在模型中执行迁移时执行迁移。看看这个http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an -asp-net-mvc-application – Ruchan

+0

您可能需要指定上下文 - 尝试使用标志-ConfigurationTypeName – Matt