0

この方法で顧客を救っています:

tb_clientes tb = new tb_clientes();
tb.clienteNOME = Cliente.clienteNOME;
tb.clienteCNPJ = Cliente.clienteCNPJ;
tb.clienteIE = Cliente.clienteIE;
tb.clienteENDERECO = Cliente.clienteENDERECO;
tb.clienteNUMERO = Cliente.clienteNUMERO;
tb.clienteCOMPLEMENTO = Cliente.clienteCOMPLEMENTO;
tb.clienteBAIRRO = Cliente.clienteBAIRRO;
tb.clienteCIDADE = Cliente.clienteCIDADE;
tb.clienteUF = Cliente.clienteUF;
tb.clienteOBS = Cliente.clienteOBS;
DB DB = new DB();

mydbEntities1 entidade = DB.contexto;
entidade.tb_clientes.Add(tb);
entidade.SaveChanges();

顧客に連絡先を追加する連絡先テーブルがあります。datagridview の連絡先で foreach を実行し、データベースに挿入する必要があります。連絡先を保存するために foreach を実行するにはどうすればよいですか?

4

1 に答える 1

0

私があなたの質問を理解したかどうかはよくわかりません。うまくいけば、これが役に立ちます。
複数のクライアントを追加する必要がある場合は、

tb_clientes tb = new tb_clients();  
entidade.tb_clientes.Add(tb);  
tb = new tb_clients(); //create another  
entidade.tb_clientes.Add(tb); //add the 2nd one  
entidade.SaveChanges(); // you only need to call this once to save all changes.  

また、顧客がいて、顧客に顧客を追加したいと述べました。顧客を設定する必要があります。そうしないと、クライアントは孤立したままになります。

tb.Customer = yourCustomer;  

上記を実行し、yourCustomer が既にコンテキスト内にあると仮定すると、この行は必要ありません。

entidade.tb_clientes.Add(tb);  

EF はユーザーが意図したことを認識し、自動的に tb をコンテキストに追加するためです。

クライアントを顧客に直接追加することもできます

tb_clientes tb = new tb_clientes();
yourCustomer.Clients.Add(tb);
tb = new tb_clients(); //create another  
yourCustomer.Clients.Add(tb); //add the 2nd one  
entidade.SaveChanges();

OPのコメントに応じて編集

画像から、テーブル間に多対多の関係を作成しているように見えます。将来、tb_clients_contatos テーブルにペイロードが含まれますか? そうでない場合、最も簡単な方法は、contato_clientID 列を削除して、残りの 2 つの列を PK にすることです。この時点で EF を更新すると、多対多の関係が自動的に作成されます。EF が透過的に tb_clients_contatos を維持するため、このテーブルを扱う必要はありません。これが新しいコードです

tb_clientes tb = new tb_clientes();
yourCustomer.Clients.Add(tb); //you're done at this point.  
    //A row in tb_clients_contatos will automatically be inserted when you SaveChanges.
tb.Customers.Add(yourCustomer); //this will work too.

リレーションシップ テーブルにペイロードが必要な場合は、こちらの投稿をご覧ください。 関連テーブルにフィールドを追加して、最初に多対多のコードを作成する

于 2013-10-14T22:27:50.710 に答える