Я работаю, как мне кажется, в реализации кода EF 4.1.База данных уже существует, и базовые модели уже существуют (сгенерированные XSD.exe для моих входящих данных XML).Я написал свои собственные сопоставления и обновил модели, чтобы они правильно работали с Entity Framework.
Когда я пытаюсь запустить код, я получаю следующую ошибку:
Один илибольше ошибок проверки были обнаружены во время генерации модели:
System.Data.Edm.EdmEntityType: Name: каждое имя типа в схеме должно быть уникальным.Имя типа 'CourtCase' уже определено.
Я проверил и дважды проверил, и этот класс определенно определен только в одном месте.Я также использовал нижнюю строку, чтобы 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.
}
}
Мне не хватает другого ключевого компонента конфигурации Entity Framework?
Полный стекТрассировка
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)