更新:事实证明我有(隐藏在我的 POCO 对象中)一个具有抽象类型的属性。删除此属性可解决此问题。
我正在尝试使用实体框架 4 ctp 5 的模型优先方案从我的模型生成我的数据库(当前使用 SQL Server CE4 后端,但我可以在 Sql Server 2008 后端上重现)。
我想我可能以某种方式弄乱了我的模型定义,但我似乎无法弄清楚错误消息是如何让我更明智的。
我的 DbContext 对象设置如下:
public class MyDb : DbContext
{
public MyDb()
{
// Apply forced recreation tactics for now
DbDatabase.SetInitializer<MyDb>(new CreateDatabaseIfNotExists<MyDb>());
}
public DbSet<UserAccount> UserAccounts { get; set; }
public DbSet<OtherData> OtherDatas { get; set; }
// etc
}
当我查询它时(如下):
MyDb db = new MyDb();
var matchingAccount = from user in db.UserAccounts where user.Email == email select user;
return matchingAccount.SingleOrDefault();
我收到以下错误:
[ArgumentNullException:值不能为空。参数名称:entitySet]
System.Lazy 1.Initialize() +62 System.Data.Entity.Internal.Linq.InternalSet 1.System.Linq.IQueryable.get_Provider() +13 System.Linq.Queryable.Where(IQueryable 1 谓词) +631.get_Value() +9591079
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +371 System.Data.Entity.Internal.InternalContext.Initialize() +16 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +15
System.Data.Entity.Internal.Linq.InternalSet1.get_Provider() +15 System.Data.Entity.Infrastructure.DbQuery
1 source, Expression
但是,我第一次构建时,这是具体错误:
[ArgumentNullException:值不能为空。参数名称:entitySet]
System.Data.Entity.ModelConfiguration.Utilities.RuntimeFailureMethods.ReportFailure(ContractFailureKind contractFailureKind, String userMessage, String conditionText, Exception innerException) +970860
System.Data.Entity.ModelConfiguration.Edm.Db.Mapping.DbDatabaseMappingExtensions.GetEntitySetMapping (DbDatabaseMapping databaseMapping, EdmEntitySet entitySet) +147
System.Data.Entity.ModelConfiguration.Edm.Services.EntityTypeMappingGenerator.Generate(EdmEntityType entityType, DbDatabaseMapping databaseMapping) +206
System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.GenerateEntityTypes(EdmModel模型,DbDatabaseMapping 数据库映射)+253
System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.Generate(EdmModel 模型) +168
System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.GenerateDatabaseMapping(EdmModel 模型,DbProviderManifest providerManifest) +233
System.Data.Entity.ModelConfiguration .ModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo, Boolean validateModel) +280 System.Data.Entity.ModelConfiguration.ModelBuilder.Build(DbConnection providerConnection) +173
System.Data.Entity.Internal.LazyInternalContext.CreateModel() +61