2017-07-30 62 views
0

本当にシンプルなdbcontextクラスを作成しようとしましたが、クラス "Class"と "Student"の2クラスです。私が有効化 - 移行後、設定ファイルはプロジェクトデータベース内のモデルへの名前空間を見つけることを意味しています。型名 'Models'が型 'Database'に存在しません

エラーコード: CS0426タイプ名 'モデル' の型 'データベース' データベースCには存在しません:プロジェクト\ SchoolManagementProtal \データベース\ Visual Studioの2017 \ \ Users \ユーザーロドニーの\ドキュメント\移行\ 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.Modelsは、相対的な名前空間の参照を使用することにより、Database.Migrationsから直接アクセスできます。

: DbMigrationsConfiguration<Models.DbContext> 
+0

答えと明確な説明に感謝します。 –

関連する問題