コードファーストのEF 4.1実装が動作していると思います。データベースはすでに存在し、基本モデルは既に存在します(受信XMLデータのXSD.exeによって生成されます)。私は独自のマッピングを作成し、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が独自のモデルを作成しようとするのを防ぐために、以下の行に慣れてきました。
私のXMLデータは、私のモデルにデシリアライズされ、その後、私は単にデータベースに保存しようとしているDatabase.SetInitializer<LoadContext>(null);
:
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.
}
}
アムI 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)
コンパイル時または実行時に検証エラーが返されるのはいつですか?実行時に、コードのどの時点でですか?設計時にEDMXファイルを持っていますか、それともその場でコンパイルされていますか? –