1

こんにちは、ここ数日、頭を悩ませている質問があります。SQL サーバー データベースと C# アプリケーションがあります。DBには別のテーブルがあります。簡単なexテーブルをお見せしましょう:Person Relationship City

ビジネス ルール: その人物は市出身なので、その人物は IdCity を持っています ある人物は他の人物と関係があり、その関係について開始日を保存する必要があります。

他のプロジェクトで私はすでにそのようなことをしましたが、このプロジェクトではこれはうまくいきません。

LinQで人物の情報を取得したところ、都市が来ず、「person.city.description」で試してみるとエラーが出ました。linq クエリで Include("City") を使用しようとしましたが、うまくいきませんでした。その上、私は個人間の関係への循環参照を管理する方法がわかりません。

問題になる可能性があると思う重要なことの1つは、DataModelのすべてのテーブルの名前を変更することです。たとえば、データベースのテーブルはPrd_Cityと呼ばれるため、C#プロジェクトで市の名前とエンティティセット名を変更します. したがって、含まれているものでは、実際のテーブル名を使用する必要があります。それ以外の場合、クエリは失敗しますが、実際の名前を使用しても何も起こりません。

using (var context = new MyContext())
{
   List<Person> oPeople = (from p in context.Person.Include("Prd_City")
                           select p).ToList();
   return oPeople ;
}

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

「うまくいかなかった」というのは、あなたの問題をうまく説明するものではありません。Personしかし、残りの質問から、 「Prd_City」という名前のナビゲーションプロパティがあると推測できますが、「City」であると予想されていました。重要なのは、エンティティの名前を変更したが、エンティティのナビゲーションプロパティの名前は変更しなかったことです。

私のアドバイス(それが何の価値があるかについて):あなたの仕事のデータベースが最初のようです。可能であれば、コードファーストに変更し、POCOクラスをテーブル名に手動でマップし、プロパティをデータベース列に手動でマップします。これは(データモデルのサイズによっては)かなりの量の作業になる可能性がありますが、その後はEFがエンティティの名前を「変更しない」リスクを冒すことはありません。その上、DbContextAPIはよりも使いやすいですObjectContext。現在、これが推奨されるEFAPIです。

于 2012-10-21T17:02:59.870 に答える