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

相关问题