我正在工作,我想是一个代码优先的EF 4.1实现。数据库已经存在,基本模型已经存在(由XSD.exe为我的传入XML数据生成)。我编写了自己的映射,并更新了模型以使其与Entity Framework正常运行。模型生成过程中的验证错误
当我尝试运行我收到下面的错误代码:
One or more validation errors were detected during model generation:
System.Data.Edm.EdmEntityType: Name: Each type name in a schema must be unique. Type name 'CourtCase' is already defined.
我已经签了一倍检查,绝对只在一个位置定义这个类。我也习惯于在线以下让DbContext避免尝试创建自己的模型。
Database.SetInitializer<LoadContext>(null);
我的XML数据被反序列化为我的模型,然后,我只是想将其保存到数据库:
var serializer = new XmlSerializer(typeof (CourtCase));
var xmlReader = new XmlTextReader(
new MemoryStream(Encoding.Default.GetBytes(_itemText)));
_deserializedCase = (CourtCase) serializer.Deserialize(xmlReader);
Database.SetInitializer<LoadContext>(null);
using (var dbContext = new LoadContext())
{
dbContext.Cases.Add(_deserializedCase);
dbContext.SaveChanges();
}
的DbContext:
public class LoadContext : DbContext
{
public DbSet<CourtCase> Cases { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
modelBuilder.Configurations.Add(new CaseMap());
etc.
}
}
上午我缺少实体框架配置的另一个关键组件?
完整的堆栈跟踪
at System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl(EdmModel model, XmlWriter writer)
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.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
at System.Data.Entity.DbSet`1.Add(TEntity entity)
何时发生验证错误 - 在编译时或运行时?如果在运行时,在你的代码中的哪一点?您在设计时是否有EDMX文件,或者是否在飞行中编译? –