1
pessoas objPessoa;
DataTable dtTelefones;
DataTable dtEnderecos;
private void salvar()
{
using (EarthWorkEntities ctx = new EarthWorkEntities())
{
frame2objeto();
ctx.AddTopessoas(objPessoa);
ctx.SaveChanges();
}
}
private void frame2objeto()
{
using (EarthWorkEntities ctx = new EarthWorkEntities())
{
objPessoa = new pessoas();
//Pessoa
objPessoa.pes_cpfcnpj = textCpf.Text;
objPessoa.pes_nome = textNome.Text;
objPessoa.pes_sexo = cbSexo.SelectedIndex == 0 ? "M" : "F";
//Cliente
clientes cliente = new clientes();
cliente.cli_dt_ultima = DateTime.Now;
objPessoa.clientes.Add(cliente);
//Telefones
foreach (DataRow row in dtTelefones.Rows)
{
telefones objTelefones;
objTelefones = new telefones();
objTelefones.EntityKey = null;
objTelefones.tel_contato = row["Contato"].ToString();
objTelefones.tel_ddd = row["DDD"].ToString();
objTelefones.tel_numero = row["Numero"].ToString();
string tipo = row["Tipo"].ToString();
tipos_telefones tipo_telefone = (from t in ctx.tipos_telefones
where t.tptel_descr == tipo
select t).FirstOrDefault<tipos_telefones>();
objTelefones.tipos_telefones = tipo_telefone;
objPessoa.telefones.Add(objTelefones);
}
//Endereço
foreach (DataRow row in dtEnderecos.Rows)
{
enderecos objEnderecos;
objEnderecos = new enderecos();
objEnderecos.EntityKey = null;
objEnderecos.end_bairro = row["Bairro"].ToString();
objEnderecos.end_cep = row["CEP"].ToString();
objEnderecos.end_cidade = row["Cidade"].ToString();
objEnderecos.end_complemento = row["Complemento"].ToString();
objEnderecos.end_logradouro = row["Logradouro"].ToString();
objEnderecos.end_numero = row["Numero"].ToString();
string tipo = row["Tipo"].ToString();
tipos_enderecos tipo_endereco = (from t in ctx.tipos_enderecos
where t.tpend_descr == tipo
select t).FirstOrDefault<tipos_enderecos>();
objEnderecos.tipos_enderecos = tipo_endereco;
objPessoa.enderecos.Add(objEnderecos);
}
}
}
當運行命令「AddTopessoas()」返回以下錯誤:「當屬性的當前值爲null該屬性的EntityKey只能設置」實體框架插入許多一對多數據庫第一
表: pessoas >> pessoas_telefones < < telefones pessoas >> pessoas_enderecos < < enderecos
我沒有粘貼按鈕事件。 點擊調用兩種方法的按鈕。 –
太棒了!工作。 –