值不能为空。 参数名称:extent

我首先使用EF6代码来创建我的数据库。 昨晚一切都运行良好,现在当我运行update-database命令时,我得到以下exception:

PM> update-database Specify the '-Verbose' flag to view the SQL statements being applied to the target database. System.ArgumentNullException: Value cannot be null. Parameter name: extent at System.Data.Entity.Utilities.Check.NotNull[T](T value, String parameterName) at System.Data.Entity.Core.Mapping.StorageEntitySetMapping..ctor(EntitySet extent, StorageEntityContainerMapping entityContainerMapping) at System.Data.Entity.ModelConfiguration.Edm.DbDatabaseMappingExtensions.AddEntitySetMapping(DbDatabaseMapping databaseMapping, EntitySet entitySet) at System.Data.Entity.ModelConfiguration.Edm.Services.TableMappingGenerator.Generate(EntityType entityType, DbDatabaseMapping databaseMapping) at System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.GenerateEntityTypes(DbDatabaseMapping databaseMapping) at System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.Generate(EdmModel conceptualModel) at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo) at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() at System.Data.Entity.Internal.LazyInternalContext.get_CodeFirstModel() at System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context, XmlWriter writer) at System.Data.Entity.Utilities.DbContextExtensions.c__DisplayClass1.b__0(XmlWriter w) at System.Data.Entity.Utilities.DbContextExtensions.GetModel(Action`1 writeXml) at System.Data.Entity.Utilities.DbContextExtensions.GetModel(DbContext context) at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext) at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration) at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator() at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run() at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force) at System.Data.Entity.Migrations.UpdateDatabaseCommand.c__DisplayClass2.b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) Value cannot be null. Parameter name: extent 

这是Context类

 public class WheelTrackDb : DbContext { public WheelTrackDb(): base("DefaultConnection"){ } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity() .HasRequired(d => d.Vehicle) .WithOptional(v => v.Driver) .Map(m => m.MapKey("VehicleId")); modelBuilder.Entity() .HasRequired(t => t.Acceptor) .WithMany() .HasForeignKey(t => t.AcceptorId) .WillCascadeOnDelete(false); modelBuilder.Entity() .HasRequired(t => t.Donor) .WithMany() .HasForeignKey(t => t.DonorId) .WillCascadeOnDelete(false); modelBuilder.Entity() .HasRequired(v => v.GSMDeviceLog) .WithMany(g => g.Violations) .HasForeignKey(v => v.GSMDeviceLogId); modelBuilder.Entity().Ignore(r => r.PolygonVertices); modelBuilder.Entity() .HasRequired(v => v.License) .WithRequiredPrincipal(); modelBuilder.Entity() .HasRequired(m => m.License) .WithOptional(l => l.MessageCounter) .Map(m => m.MapKey("LicenseId")); modelBuilder.Entity() .HasRequired(g => g.Vehicle) .WithMany(t => t.GsmDeviceLogs); } public DbSet UserInfos{ get; set; } public DbSet TransactionLogs{ get; set; } public DbSet Drivers { get; set; } public DbSet Vehicles{ get; set; } public DbSet VehicleGroups { get; set; } public DbSet Licenses { get; set; } public DbSet Policys { get; set; } public DbSet GSMDeviceLogs { get; set; } public DbSet MessageCounters { get; set; } public DbSet Violations { get; set; } public DbSet OwnershipPapers { get; set; } public DbSet Subscribers { get; set; } } 

这是配置:

 internal sealed class Configuration : DbMigrationsConfiguration { public Configuration() { AutomaticMigrationsEnabled = true; } protected override void Seed(WheelTrack.Models.WheelTrackDb context) { } } 

我搜索了互联网,发现我应该只在我的上下文类中有属性。 我检查了三次,它只有dbset属性。 我无法弄清楚发生了什么。 任何帮助将不胜感激。 谢谢。

发现了问题。 实际上我在UserInfo模型中有一个HttpPosetedFileBase属性,EF无法绑定到数据库列。

在它上面放置一个未映射的属性使它工作。

  [NotMapped] public HttpPostedFileBase Photo { get; set; } 

因此,对于遇到此问题的其他人,请确保两件事:

  1. 您的上下文应始终包含DbSets属性。 示例 –

    public DbSet Policies { get; set; }

  2. 模型类中不应存在EF无法绑定到数据库列的类型。

希望能帮助到你。