2016-11-26 55 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

錯誤很明顯說你有兩個屬性可以在你的數據庫上下文中包含相同類型的對象。這是不允許的。你爲什麼有兩個? –

回答

2

即使名稱空間不同,也不能在同一個上下文中擁有兩個具有相同名稱的類。這裏的關鍵字是SAME上下文。如果你有另一個上下文,那麼它會很好。這是因爲即使您使用代碼優先的方法,EF在幕後創建了一個EDMX文件。 EDMX的規則是在同一個EDMX中不能有兩個同名的表。

+0

@ Dodi82這是否回答你的問題?如果是,請閱讀[this](http://stackoverflow.com/help/someone-answers) – CodingYoshi

2

你的問題是不是與ASP.NET MVC,但與實體框架。在你的數據庫上下文中,你有兩個相同類型的數據庫集。

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

只要刪除其中之一。

+0

非常感謝您的回覆!我刪除了其中一個,它完美的工作!但爲什麼會發生? – Dodi

+0

我以爲你用手寫了ApplicationDbContext,所以答案就是'因爲你把它放在那裏兩次'。但是,如果它是由一個工具生成的,那麼不幸的是我不知道:( – user44

+0

我認爲我運行了數據庫更新,這是主要原因!!它在更新開始後自動生成了ApplicationDbContext!但是,謝謝再次爲您的答案,我欣賞它:) – Dodi

相關問題