C# 循环以保存客户端和联系人ado.net实体模型

C# 循环以保存客户端和联系人ado.net实体模型,c#,datagridview,insert,ado.net,savechanges,C#,Datagridview,Insert,Ado.net,Savechanges,“我用这种方式拯救客户: 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.

“我用这种方式拯救客户:

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保存联系人?

不太清楚我是否理解您的问题。希望这能有所帮助。
如果需要添加多个客户端

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;  
如果您执行上述操作,并且假设您的客户已经在上下文中,您将不需要这一行

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_客户端内容。这是新代码

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.

如果您的关系表确实需要有效负载,这里有一个很好的帖子

我必须为同一个客户保存一个客户和多个联系人。下面的打印屏幕将帮助您理解。我认为如果你也能发布你的代码,那会很有帮助。您甚至可能不需要循环来保存。此外,您的模型还显示了多个或至少2 1多个关系。但是你的帖子表明你只需要一个1-many。相反,更改模型可能效果更好。