我是学习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; }
}
答案 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中不能有两个具有相同名称的表。