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

Вы не можете иметь два класса с одинаковым именем, даже если пространства имен разные, в том же контексте. Ключевое слово здесь - это ТОЖЕ контекст. Если бы у вас был другой контекст, тогда все будет хорошо. Это связано с тем, что, хотя вы используете первый подход к коду, EF создает файл EDMX за кулисами. Правила EDMX заключаются в том, что вы не можете иметь две таблицы с тем же именем в том же EDMX.

+0

@ Dodi82 это ответ на ваш вопрос? Если да, прочитайте [это] (http://stackoverflow.com/help/someone-answers) – CodingYoshi

2

Ваша проблема не с ASP.NET MVC, но с Entity Framework. В вашем db-контексте у вас есть два набора db одного типа.

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

Смежные вопросы