I'm creating an application like a bank to train C #, but I stumbled into a situation. I have a database with the Accounts, Clients, and Account Types tables. In the table TypeCounts there is registered the item "Savings" with ID "1" and the item "Chain" with ID "2". When I register a new account, I load the Account Types in a combobox to select the desired type. My question is the following, how do I when I register the account the account type ID is assigned to the new "account" object created?
Follow the code below:
Account Class:
public class Conta
{
[Key]
public int numero { get; set; }
public double saldo { get; protected set; }
public TipoConta tipoConta { get; set; }
public Cliente cliente { get; set; }
public Conta(Cliente idCliente)
{
this.cliente = idCliente;
this.numero = numero;
this.saldo = saldo;
this.tipoConta = tipoConta;
}
Account Type Class
public class TipoConta
{
public int id { get; set; }
public string descricao { get; set; }
public TipoConta()
{
}
}
Form Account Master
public partial class CadastroDeContas : Form
{
private CaixaEletronico aplicacaoPrincipal;
public CadastroDeContas(CaixaEletronico aplicacaoPrincipal)
{
this.aplicacaoPrincipal = aplicacaoPrincipal;
InitializeComponent();
}
private void CadastroDeContas_Load(object sender, EventArgs e)
{
using (BancoContext contexto = new BancoContext())
{
comboTipoConta.DataSource = contexto.TiposConta.ToList();
comboTipoConta.ValueMember = "id";
comboTipoConta.DisplayMember = "descricao";
comboTipoConta.Refresh();
comboTipoConta.SelectedIndex = -1;
//comboTipoConta.Items.Add("CORRENTE");
//comboTipoConta.Items.Add("POUPANÇA");
}
}
public void Limpar()
{
txtTitularNovaConta.Text = "";
txtCpf.Text = "";
comboTipoConta.Text = "";
}
public void btnCadastrar_Click(object sender, EventArgs e)
{
using (var contexto = new BancoContext())
{
var tiposConta = contexto.TiposConta.ToList();
}
if (txtTitularNovaConta.Text != "")
{
//converte os textos de entrada
string nome = txtTitularNovaConta.Text;
string cpf = txtCpf.Text;
if (comboTipoConta.SelectedIndex >= 0)
{
//verifica se conta poupança ou corrente
switch (comboTipoConta.SelectedIndex)
{
case 0:
Cliente cliente = new Cliente();
Conta conta = new Conta();
cliente.Cpf = cpf;
cliente.Nome = nome;
conta.cliente = cliente;
this.aplicacaoPrincipal.AdicionaConta(cliente, conta);
using (var contexto = new BancoContext())
{
var tiposConta = contexto.TiposConta.ToList();
conta.tipoConta.id = Convert.ToInt32(comboTipoConta.ValueMember);
contexto.Clientes.Add(cliente);
contexto.Contas.Add(conta);
contexto.SaveChanges();
aplicacaoPrincipal.AdicionaConta(cliente, conta);
}
MessageBox.Show("Conta " + comboTipoConta.SelectedItem + " cadastrada com Sucesso");
Limpar();
break;
case 1:
Cliente cl = new Cliente();
Conta c = new Conta();
cl.Cpf = cpf;
cl.Nome = nome;
c.cliente = cl;
c.tipoConta.descricao = comboTipoConta.SelectedItem.ToString();
c.tipoConta.id = Convert.ToInt16(comboTipoConta.ValueMember);
this.aplicacaoPrincipal.AdicionaConta(cl, c);
using (var contexto = new BancoContext())
{
contexto.Clientes.Add(cl);
contexto.Contas.Add(c);
contexto.SaveChanges();
aplicacaoPrincipal.AdicionaConta(cl, c);
}
MessageBox.Show("Conta " + comboTipoConta.SelectedItem + " cadastrada com Sucesso");
Limpar();
break;
}