gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:33:33 28 4
gpt4 key购买 nike

我首先使用 EF6 代码来创建我的数据库。昨晚一切正常,现在当我运行 update-database 命令时,出现以下异常:

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.<GetModel>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.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Value cannot be null.
Parameter name: extent

这是上下文类

public class WheelTrackDb : DbContext
{
public WheelTrackDb(): base("DefaultConnection"){ }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Driver>()
.HasRequired(d => d.Vehicle)
.WithOptional(v => v.Driver)
.Map(m => m.MapKey("VehicleId"));

modelBuilder.Entity<TransactionLog>()
.HasRequired(t => t.Acceptor)
.WithMany()
.HasForeignKey(t => t.AcceptorId)
.WillCascadeOnDelete(false);

modelBuilder.Entity<TransactionLog>()
.HasRequired(t => t.Donor)
.WithMany()
.HasForeignKey(t => t.DonorId)
.WillCascadeOnDelete(false);

modelBuilder.Entity<Violation>()
.HasRequired(v => v.GSMDeviceLog)
.WithMany(g => g.Violations)
.HasForeignKey(v => v.GSMDeviceLogId);

modelBuilder.Entity<RouteFence>().Ignore(r => r.PolygonVertices);

modelBuilder.Entity<Vehicle>()
.HasRequired(v => v.License)
.WithRequiredPrincipal();

modelBuilder.Entity<MessageCounter>()
.HasRequired(m => m.License)
.WithOptional(l => l.MessageCounter)
.Map(m => m.MapKey("LicenseId"));

modelBuilder.Entity<GSMDeviceLog>()
.HasRequired(g => g.Vehicle)
.WithMany(t => t.GsmDeviceLogs);

}

public DbSet<UserInfo> UserInfos{ get; set; }
public DbSet<TransactionLog> TransactionLogs{ get; set; }
public DbSet<Driver> Drivers { get; set; }
public DbSet<Vehicle> Vehicles{ get; set; }
public DbSet<VehicleGroup> VehicleGroups { get; set; }
public DbSet<License> Licenses { get; set; }
public DbSet<Policy> Policys { get; set; }
public DbSet<GSMDeviceLog> GSMDeviceLogs { get; set; }
public DbSet<MessageCounter> MessageCounters { get; set; }
public DbSet<Violation> Violations { get; set; }
public DbSet<OwnershipPaper> OwnershipPapers { get; set; }
public DbSet<Subscriber> Subscribers { get; set; }
}

这是配置:

internal sealed class Configuration : DbMigrationsConfiguration<WheelTrack.Models.WheelTrackDb>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}


protected override void Seed(WheelTrack.Models.WheelTrackDb context)
{

}
}

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

最佳答案

发现问题。实际上,我有一个 HttpPostedFileBase EF 无法绑定(bind)到数据库列的 UserInfo 模型中的属性。

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

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

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

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

    public DbSet<Policy> Policies { get; set; }

  2. 模型类中不应有 EF 无法绑定(bind)到数据库列的类型。

希望对您有所帮助。

关于c# - 值不能为空。参数名称 : extent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21277078/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com