2016-11-26 11 views
0

MVCの学習で新しく、このエラーが発生しました。タイプごとに複数のオブジェクトセットがサポートされていませんAsp.net MVC

タイプごとに複数のオブジェクトセットはサポートされていません。オブジェクトセット 'checkAccounts'と 'CheckingAccounts'にはどちらも 'MVC_ATM.ViewModels.CheckingAccount'タイプのインスタンスが含まれています。

私はこの種のエラーについて同様の質問を見ましたが、私のコードでそれを見つけることができませんでした!

DbContext

public interface IApplicationDbContext 
{ 
    IDbSet<CheckingAccount> checkAccounts { get; set; } 

    IDbSet<Transaction> Transactions { get; set; } 

    int SaveChanges(); 
} 
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplicationDbContext 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection", throwIfV1Schema: false) 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>()); 
     base.OnModelCreating(modelBuilder); 

    } 

    public IDbSet<CheckingAccount> checkAccounts { get; set; } 

    public IDbSet<Transaction> Transactions { get; set; } 

    public System.Data.Entity.DbSet<MVC_ATM.ViewModels.CheckingAccount> CheckingAccounts { get; set; } 
} 
+1

このエラーは、dbコンテキストで同じタイプのオブジェクトを含むことができる2つのプロパティがあることを明確に示しています。これは許可されていません。なぜあなたは2つ持っているのですか? –

答えて

2

名前空間が異なる場合でも、同じコンテキストで同じ名前のクラスを2つ持つことはできません。ここのキーワードは、同じコンテキストです。あなたが別の文脈を持っていれば、それはうまくいくでしょう。これは、コードの最初のアプローチを使用していても、EFはEDMXファイルをシーンの裏に作成するためです。 EDMXのルールでは、同じEDMX内に同じ名前のテーブルを2つ持つことはできません。

+0

@ Dodi82この答えはあなたの質問をしましたか?はいの場合は、[this](http://stackoverflow.com/help/someone-answers)をお読みください。 – CodingYoshi

2

あなたの問題は、ASP.NET MVCでなく、Entity Frameworkのではありません。あなたのdbコンテキストでは、同じタイプの2つのdbセットがあります。

public IDbSet<CheckingAccount> checkAccounts { get; set; } 
public System.Data.Entity.DbSet<MVC_ATM.ViewModels.CheckingAccount> CheckingAccounts { get; set; } 

ただ削除してください。

+0

お返事ありがとうございました!私はそれらの1つを削除し、それは完全に動作します!しかし、なぜこれが起こったのですか? – Dodi

+0

私はあなたが手でApplicationDbContextを書いたと思ったので、答えは「あなたがそれを2回置いたからです。しかし、それがツールによって生成された場合、残念ながら私は知りません:( – user44

+0

私はデータベースへの更新を実行したと思いますが、これが主な理由でした!!それは更新が開始した後自動的にApplicationDbContextを生成しました!もう一度あなたの答えと私はそれを感謝します:) – Dodi

関連する問題