2017-01-10 13 views
-1

私は奇妙な行動を持って、再挿入変更されたオブジェクトEntityFramework

entityframwork 6を​​使用して、私はオブジェクトのリストを取得し、その後、私は再びリストを挿入し、外部キーを変更します。結果として、挿入は行われますが、外部キーは変更されません。

var clients = Uow.Clients.GetAll().where(x => x.zipCode= newZip); 
      var newClients = new List<Client>(); 
      foreach (var client in clients) 
      { 
       client.City = null; 
       client.cityId = newCityId; 
       newClients.Add(client); 
      } 
      Uow.Clients.AddMany(newClients); 
      Uow.Commit(); 

IでsaveChangesまたはAddManyが動作するかどうか、答えははい、私はこれらの関数を使用しているがたくさん、すべてが正常に動作している場合、あなたが思っている場合。起きても何

+0

であると推測しています明示的にそれを設定する?それは有効な外部キーですか? –

+0

あなたはそれを移植した後に 'newClients'を使用することは決してありません。私はこれがどのようにまったく機能するのか分かりません。 – David

+0

新しいエンティティを追加しました - その第1の問題です。なぜあなたは 'newClients'を作成し、使用しないのですか? 'T.City'はヌル可能ですか? –

答えて

1

AsNoTracking()を使用してDbContextから検索が切断行い、その後、データを変更しようと、あなたが検索を実行すると、あなたのエンティティはDbContextさんChangeTrackerを通じてコン​​テキストにリンクされていることです。これを試してみてください:

var clients = Uow.Clients.AsNoTracking().where(x => x.zipCode= newZip); 
var newClients = new List<Client>(); 
foreach (var client in clients) 
{ 
    client.City = null; 
    client.cityId = newCityId; 
    newClients.Add(client); 
} 

Uow.Clients.AddMany(client); 
Uow.Commit(); 

PS:私は、UOWはあなたが `newClients`レコードをデバッグするときは、各` cityId`が、それは `clients`なく何であるものであるDbContextオブジェクト

関連する問題