2

私はこれらのエンティティを持っています (これは、この記事のために作成した単なる抽象化です):

  • 言語
  • 区域
  • 説明

これらはそれらの間の参照です:

  • 地区 * - 1言語
  • 説明 * - 1言語
  • 地区 1 - 1の説明

このようにフェッチすると:

var myFetch = from c in context.Districts
              where c.Id = 10
              select new { DistrictId = c.Id, Lang = c.Language };

その後、次のように説明に割り当てようとします。

Description desc = Description.CreateDescription(0, "My description");
desc.DistrictReference.EntityKey = new EntityKey("MyEntities.Descriptions", "DistrictId", myFetch.DistrictId);
desc.Language = myFetch.Lang; //throws error

スローされるエラーは次のとおりです。

System.InvalidOperationException: EntitySet 名 'MyEntities.Descriptions' が関連付けセット名 'MyEntities.District_Description' のロール 'District' に対して有効でないため、関係を定義できません。

私は何を間違っていますか?

4

2 に答える 2

2

メッセージの内容:間違ったエンティティセット名を指定しました。

  1. EDMXを開きます。
  2. モデルブラウザウィンドウを開きます。
  3. モデルブラウザで地区エンティティを検索します
  4. それを右クリックし、「プロパティ」を選択します
  5. 正しいエンティティセット名に注意してください
于 2009-09-30T16:13:20.847 に答える
1

myFetchクラスのインスタンスである場合は、プログラムDistrictで実行できます。

desc.DistrictReference.EntityKey = new EntityKey(  
  String.Format(  
    "{0}.{1}",   
    myFetch.EntityKey.EntityContainerName,   
    myFetch.EntityKey.EntitySetName),   
  "DistrictId", 
  myFetch.DistrictId);  
于 2010-06-02T13:29:25.860 に答える