不支持每种类型的多个对象集Asp.net MVC

时间:2016-11-26 21:18:35

标签: c# asp.net-mvc asp.net-mvc-4

我是学习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; }
}

2 个答案:

答案 0 :(得分:2)

您的问题不是ASP.NET MVC,而是Entity Framework。在您的数据库上下文中,您有两个相同类型的数据库集。

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

只需删除其中一个。

答案 1 :(得分:2)

在同一个上下文中,即使名称空间不同,也不能有两个具有相同名称的类。这里的关键字是SAME上下文。如果你有另一个背景,那就没关系了。这是因为即使您使用代码优先方法,EF也会在幕后创建EDMX文件。 EDMX的规则是在同一个EDMX中不能有两个具有相同名称的表。