C# Sprawdzanie czy rekord istnieje w bazie...

0

Witam serdecznie mam taki kod który importuje dane z xls i zapisuje je w bazie:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MS2
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PopulateData();
                lblMessage.Text = "Current Database Data!";
            }
        }

        private void PopulateData()
        {
            using (BazaMSEntities dc = new BazaMSEntities())
            {
                gvData.DataSource = dc.TabelaImport.ToList();
                gvData.DataBind();
            }
        }

        protected void btnImport_Click(object sender, EventArgs e)
        {
            if (FileUpload1.PostedFile.ContentType == "application/vnd.ms-excel" ||
                FileUpload1.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
            {
                try
                {
                    string fileName = Path.Combine(Server.MapPath("~/ImportDocument"), Guid.NewGuid().ToString() + Path.GetExtension(FileUpload1.PostedFile.FileName));
                    FileUpload1.PostedFile.SaveAs(fileName);

                    string conString = "";
                    string ext = Path.GetExtension(FileUpload1.PostedFile.FileName);
                    if (ext.ToLower() == ".xls")
                    {
                        conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; ;
                    }
                    else if (ext.ToLower() == ".xlsx")
                    {
                        conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                    }

                    string query = "Select [Id],[Zleceniodawca], [Odbiorca],[Material],[Ilosc],[Miesiac] from [Arkusz1$]";
                    OleDbConnection con = new OleDbConnection(conString);
                    if (con.State == ConnectionState.Closed)
                    {
                        con.Open();
                    }
                    OleDbCommand cmd = new OleDbCommand(query, con);
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);

                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    da.Dispose();
                    con.Close();
                    con.Dispose();

                    // Import to Database
                    using (BazaMSEntities dc = new BazaMSEntities())
                    {
                        foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            string empID = dr["Id"].ToString();
                            var v = dc.TabelaImport.Where(a => a.Id.Equals(empID)).FirstOrDefault();
                            if (v != null)
                            {
                                // Update here
                                v.Zleceniodawca = dr["Zleceniodawca"].ToString();
                                v.Odbiorca = dr["Odbiorca"].ToString();
                                v.Material = dr["Material"].ToString();
                                v.Ilosc = dr["Ilosc"].ToString();
								v.Miesiac = dr["Miesiac"].ToString();
                            }
                            else
                            {
                                // Insert
                                dc.TabelaImport.Add(new TabelaImport
                                {
                                    Id = dr["Id"].ToString(),
                                    Zleceniodawca = dr["Zleceniodawca"].ToString(),
                                    Odbiorca = dr["Odbiorca"].ToString(),
                                    Material = dr["Material"].ToString(),
                                    Ilosc = dr["Ilosc"].ToString(),
									Miesiac = dr["Miesiac"].ToString()
                                    
                                });
                            }
                        }

                        dc.SaveChanges();
                    }

                    PopulateData();
                    lblMessage.Text = "Successfully data import done!";
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }









    }
}

I teraz tak jest to baza gdzie są zsumowane wartości w danym dla poszczególnych materiałów, odbiorców.
Mam pytanie jako że ID sam nadaje w tabeli excel chciałbym utworzyć unikalny klucz zapytania do bazy bez potrzeby jego nadawania ręcznie. Mianowice chciałbym przed dodaniem do bazy aby skrypt sprawdził mi czy w bazie znajduje się wpis który zawiera identyczne wartości zarówno w bazie i w tabeli [Zleceniodawca] AND [Odbiorca] AND [Material] AND [Ilosc] AND [Miesiac] jeśli w excelu zgadza ise to co jest w bazie nie dodaje do bazy rekordu z wierszem tylko przechodzi do następnego. Czy ktoś pomógłby mi w tym jak mam to zrobić?? Z góry dziękuję za pomoc.

0

Cuduje z takim czymś ale cosik mi to nie wychodzi ;(

foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            string empID = dr["Zleceniodawca"].ToString() + dr["Odbiorca"].ToString() + v.Material = dr["Material"].ToString();
                            var v = dc.TabelaImport.Where(a => a.Id.Equals(empID)).FirstOrDefault();
                            if (v != null)
                            {
                                // Update here
                                    
                                v.Ilosc = dr["Ilosc"].ToString();
                            }
                            else
                            {
                                // Insert
                                dc.TabelaImport.Add(new TabelaImport
                                {
                                
                                    Zleceniodawca = dr["Zleceniodawca"].ToString(),
                                    Odbiorca = dr["Odbiorca"].ToString(),
                                    Material = dr["Material"].ToString(),
                                    Ilosc = dr["Ilosc"].ToString()
                                    
                                });
                            }
                        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1