2011-11-20 11 views
4

他の開発者が作成したエンティティ\テーブルを使用して、WCF \ EFについては現在プロジェクトの作業に取り掛かっています。私は通常、新しいことに追いつくのはかなり速いです、そして、私はアプリケーションであなたの仕事をするためにdatacontextを使用する方法についての小さな基礎を持っています。私の唯一の問題は、他の開発者によって作成されたコンテキストが動作していないように見えることです。問題がモデル、マッピング、またはテーブルにあるかどうかはわかりません。モデル作成中のNullReferenceException

プロジェクトの基本的な前提は次のとおりです。開発者は最初にデータベースを作成し、次にそのオブジェクトのEFマッピングを含むPOCOオブジェクトをテーブルに作成しました。彼は後で新しい列\表でアップグレードを容易にするためにこれを行いました。モデルの作成では、OnModelCreatingイベントをオーバーライドし、各オブジェクトのモデルビルダにマッピングを追加することによって、マッピングがEFのマッピングの代わりに置換されます。そして、これはとNullReferenceException後に発生するよう次のこと:

at System.Data.Entity.ModelConfiguration.Configuration.Properties.Navigation.NavigationPropertyConfiguration.ValidateConsistency(NavigationPropertyConfiguration navigationPropertyConfiguration) 
at System.Data.Entity.ModelConfiguration.Configuration.Properties.Navigation.NavigationPropertyConfiguration.Configure(EdmNavigationProperty navigationProperty, EdmModel model, EntityTypeConfiguration entityTypeConfiguration) 
at System.Data.Entity.ModelConfiguration.Configuration.Types.EntityTypeConfiguration.ConfigureAssociations(EdmEntityType entityType, EdmModel model) 
at System.Data.Entity.ModelConfiguration.Configuration.Types.EntityTypeConfiguration.Configure(EdmEntityType entityType, EdmModel model) 
at System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.ConfigureEntities(EdmModel model) 
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.GetEnumerator() 
at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() 
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 

は私の主な問題は、私はできる限り、私は、検索することにより、この原因を私につながるあらゆる情報を見つけることができないようであり、この特定の方法でこの問題を抱えている他の人々を見つけるようではない。マッピングの\ POCOs \ usageのコードスニペットを含めることにしましたが、私はこのプロジェクトのNDAの下にあります。私の主な問題は、誰かがこの問題の原因を調べるべき領域を教えてくれるかどうかだけです... POCOセットアップ、マッピング設定、またはテーブル設定?どんな助けでも大歓迎です!私は何度も自分自身ですべてのコードを見てきましたが、何も見つからないように見えるので、いくつかの焦点が役立ちます。私はできることを手伝うつもりです。

答えて

6

OK。私はここに投稿していますので、後でこの方法で問題に遭遇した場合、その環境の中でどこにいるのかを知ることができます。

コンパイルしてPOCOがうまく見えたので、エラーがマッピングにあったと確信していました。私はプロジェクトのコンテキストを調べ、DbSet<x>宣言のすべて、およびそれぞれのマッピング設定をコメントアウトしました。次に、エンティティのdbsetと構成のコメントを解除して、順番に調べました。コンテキストインスタンシエーションが成功すると、次のエンティティを実行します。最終的に、1対1の関係を共有している2つの関連エンティティが残されました。コメントを外すと、最終的なデータコンテキストのインスタンス化は失敗します。

リレーションシップマッピングが2つのアイテム間で正しく定義されていませんでした。このリンクは私を助けたAssociations in EF Code First

これは、モデルの検証時にナビゲーションプロパティをナビゲートできなかったために表示されるため、これ以上の理由でエラーが発生する可能性があると私は確信しています。この方法でそれを見つける。

希望すると便利です。

関連する問題