8

EF を使用してモデルを作成し、DbContext 5.X ジェネレーターを使用してそのコンテキストを生成しました。ここで、エンティティの 1 つのクラス名の名前を変更しました。コードを実行すると、「エンティティ タイプ Student2 は、現在のコンテキストのモデルの一部ではありません」というメッセージが表示されます。エラー。

var context = new MyEntities(connectionString);
foreach(var student in context.Students)
{
    Console.WriteLine(class.Name.ToString());
}

私のデータコンテキストでは。

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

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

    // public DbSet<Student> Students { get; set; } -> Origional
    public DbSet<Student2> Student { get; set; } // I renamed Student to Student2
}

これを修正する方法は?競合があるため、クラスの名前を変更する必要があります。

4

4 に答える 4

14

接続文字列に間違ったメタデータがあると、同じ問題が発生しました。app.config で接続文字列を再作成してみてください。

于 2013-12-17T12:29:18.860 に答える
0

多くのチュートリアルでは、必要のないこれらすべての追加クラスを作成するよう求められます。基本的に、エンティティ フレームワークを機能させるために必要なことは、モデルを作成し、コントローラーでオブジェクトを作成することだけです。

モデルの例: myEntity.edmx コントローラーの例:

public class HomeController : Controller
    {
        myEntity db = new myEntity();

        public ActionResult Index()
        {
            return View(db.myTable.ToList());
        }
}

他のすべてはエンティティ モデルにあるため、「myEntityContext」はモデルの一部ではありません」というエラーが表示された場合、チュートリアルに従って「myEntityContext」という名前の追加のクラスを作成していたため、それは本当でした。

作成したコンテキストで強力なビューを作成しようとすると、モデルに存在しないクラスを関連付けようとするため、ビューが爆発します。したがって、余分な DAL とモデル コンテキストをすべて削除し、Strong ビュー メニューに表示される Entity.context を使用して新しいビューを作成すると、すべてが正常に機能するはずです。

私は同じ問題を抱えていて、それを修正するために私がしたことを投稿しました

于 2013-11-09T18:20:04.397 に答える