2017-07-30 34 views
0

我试图用2类“Class”和“Student”创建一个非常简单的dbcontext类。在启用迁移之后,配置文件一直说它不能在项目数据库中找到模型的命名空间。类型'数据库'中不存在类型名称'Models'

错误代码: CS0426类型名称 '模式' 不存在的类型 '数据库' 数据库存在C:\用户\罗德尼\文件\的Visual Studio 2017年\项目\ SchoolManagementProtal \数据库\迁移\ Configuration.cs

项目stucture enter image description here

的DbContext类:在迁移

using System.Data.Entity; 

namespace Database.Models 
{ 
    public class DbContext : System.Data.Entity.DbContext 
    { 
     public DbSet<Class> Classes { get; set; } 
     public DbSet<Student> Students { get; set; } 


     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<Class>() 
       .HasMany(c => c.Students) 
       .WithMany(c => c.Classes); 


     } 
    } 
} 

配置文件:

namespace Database.Migrations 
{ 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Migrations; 
    using System.Linq; 

    internal sealed class Configuration : DbMigrationsConfiguration<Database.**Models**.DbContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = false; 
     } 


    } 
} 

类实体:

using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 

namespace Database.Models 
{ 
    public class Class 
    { 
     [Key] 
     public int Id { get; set; } 

     [Required] 
     [StringLength(50)] 
     public string ClassName { get; set; } 

     [Required] 
     [Range(1, 100)] 
     public int MaxStudents { get; set; } 

     public int StudentId { get; set; } 

     public ICollection<Student> Students { get; set; } 

    } 
} 

学生实体

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 

namespace Database.Models 
{ 
    public class Student 
    { 
     [Key] 
     public int Id { get; set; } 

     public int ClassId { get; set; } 

     [Required] 
     [StringLength(100)] 
     public string Name { get; set; } 

     [Required] 
     public DateTime DateOfBirth { get; set; } 

     [Required] 
     public Gender Gender { get; set; } 

     [Required] 
     public int TotalHours { get; set; } 

     [Required] 
     public int HoursStudied { get; set; } 

     public DateTime DateJoined { get; set; } 

     public ICollection<Class> Classes { get; set; } 


     public int HoursLeft 
     { 
      get 
      { 
       return this.TotalHours - this.HoursStudied; 
      } 
     } 
    } 

} 

我想我错过了一些类型的引用或东西。但即使谷歌搜索一段时间后,我找不到任何解决方案。我在这里先向您的帮助表示感谢。干杯!

回答

2

System.Data.Entity.Database和你Database命名空间,在这种情况下,类优先,因此编译器错误之间的名称冲突。

您需要通过或者使用全局命名空间别名来解决这个问题:

: DbMigrationsConfiguration<global::Database.Models.DbContext> 

或因为在这种特殊情况下,Database.ModelsDatabase.Migrations直接访问,通过使用相对命名空间参考:

: DbMigrationsConfiguration<Models.DbContext> 
+0

谢谢你的回答以及明确的解释。 –

相关问题