如何检查数据库中是否存在特定字段,如果不存在则添加记录,否则进行编辑

时间:2019-11-13 22:23:20

标签: c# sql-server winforms entity-framework

这是我在注册表中的代码:

    public override void Guardar()
    {
        if (ValidarCampos() == true)
        {
            try
            {
                if (MessageBox.Show("Desea guardar este registro?", "Mensaje", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    using (DBEntities db = new DBEntities())
                    {
                        bool contactExists = db.cliente.Any(o => o.nombre_cliente.Equals(txtRegCliente.Text));
                        if (contactExists)
                        {
                            MessageBox.Show("El cliente ingresado ya existe");
                            txtRegCliente.Clear();
                            return;
                        }
                        else
                        {
                        if (cliente_id == null)
                                oCliente = new cliente();

                            oCliente.nombre_cliente = txtRegCliente.Text;
                            oCliente.vendedor_id = Convert.ToInt32(cbRegVendedor.SelectedValue);
                            oCliente.tipo_cliente_id = Convert.ToInt32(cbRegTipoCliente.SelectedValue);

                            if (cliente_id == null)
                            {
                                db.cliente.Add(oCliente);
                            }
                            else
                            {
                                db.Entry(oCliente).State = EntityState.Modified;
                            }
                        db.SaveChanges();
                            MessageBox.Show("Se ha guardado correctamente");
                            this.Close();
                        }
                    }
                }
            }
            catch (Exception error)
            {
                MessageBox.Show("Ha ocurrido un error: " + error.Message);
            }
        }
    }

我有2个按钮,“新建”和“编辑”,都打开相同的窗口形式。如果单击“新建”,则文本框和组合框是干净的,如果是“编辑”,则将使用数据库中的值打开表单。当它是“ New”但它是“ Edit”并且我想修改另一个不是“ nombre_cliente”的文本框时,它可以正常工作,我收到一条消息:“客户已经存在”。如果在“ New”和“ Edit”两种情况下数据库中都已经存在especific文本框“ nombre_cliente”,我只想返回到表单,我正在使用Windows窗体,EF数据库,C#

编辑:

这是我的第一个表格:

enter image description here

这是代码(解决我的问题的重要部分):

    private int? GetId()
    {
        try
        {
            return int.Parse(dgvTablas.Rows[dgvTablas.CurrentRow.Index].Cells[0].Value.ToString());
        }
        catch
        {
            return null;
        }
    }
    #endregion

    public override void Nuevo()
    {
        Presentation.FrmRegCliente oCliente = new Presentation.FrmRegCliente();
        oCliente.ShowDialog();

        Refrescar();
    }

    public override void Editar()
    {
        int? cliente_id = GetId();
        if (cliente_id != null)
        {
            Presentation.FrmRegCliente oCliente = new Presentation.FrmRegCliente(cliente_id);
            oCliente.ShowDialog();

            Refrescar();
        }
    }

第二个用于添加或编辑记录的表格:

enter image description here

以及我一开始跳过的代码部分:

public partial class FrmRegCliente : FrmBaseGuardar
{
    public int? cliente_id;
    cliente oCliente = null;
    public FrmRegCliente(int? cliente_id = null)
    {
        InitializeComponent();
        this.cliente_id = cliente_id;
        if (cliente_id != null)
            CargaDatos();
        else
        {
            CargarVendedor();
            CargarTipoCliente();
        }
    }


    private void CargaDatos()
    {
        CargarVendedor();
        CargarTipoCliente();


        using (DBEntities db = new DBEntities())
        {

            oCliente = db.cliente.Find(cliente_id);
            cliente_id = oCliente.cliente_id;
            txtRegCliente.Text = oCliente.nombre_cliente;
            cbRegVendedor.SelectedValue = Convert.ToInt32(oCliente.vendedor_id);
            cbRegTipoCliente.SelectedValue = Convert.ToInt32(oCliente.tipo_cliente_id);
        }

    }

//按钮“ Guardar”代码 PD:对不起,如果我的语法不正确,英语不是我的母语

0 个答案:

没有答案
相关问题