How to leave existing data unchanged is a condition is false











up vote
0
down vote

favorite












I am currently working on a project where I need to be able to rent a truck to a customer but also need to add the customer details if not existing. My problem is even though through the WPF form I input the exact same details of a customer, there would be a new set of data added thus creating a new Customer ID for one person. How would I be able to get the database disregard the existing customer details?



My data service code:



 public class DataService
{
public static void rentTruck(TruckRental toRent, bool isNewCustomer)
{
using (var ctx = new DAD_TruckRental_RGMContext())
{

if (!isNewCustomer)
{

ctx.Entry(toRent.Customer).State = EntityState.Unchanged;//doesnt leave existing customer unchanged
}
ctx.Entry(toRent.Truck).State = EntityState.Modified;
ctx.TruckRental.Add(toRent);
ctx.SaveChanges();
}
}


My cs code:



private void Button_Click(object sender, RoutedEventArgs e)
{

TruckCustomer cust = new TruckCustomer();
cust.Age = int.Parse(ageTextBox.Text);
cust.LicenseNumber = licenseNumberTextBox.Text;
cust.LicenseExpiryDate = licenseExpiryDateDatePicker.SelectedDate.Value.Date;


TruckPerson per = new TruckPerson();
per.Address = addressTextBox.Text;
per.Telephone = telephoneTextBox.Text;
per.Name = nameTextBox.Text;

cust.Customer = per;


int truckId = int.Parse(truckIdTextBox.Text);
IndividualTruck truck = DataService.searchTruckByID(truckId);

decimal priceTotal = decimal.Parse(totalPriceTextBox.Text);

TruckRental toRent = new TruckRental();
toRent.TotalPrice = priceTotal;
toRent.RentDate = rentDateDatePicker.SelectedDate.Value.Date;

toRent.ReturnDueDate = returnDueDateDatePicker.SelectedDate.Value.Date;
toRent.Customer = cust;
toRent.Truck = truck;
truck.Status = "Rented";


DataService.rentTruck(toRent, true);

MessageBox.Show("Truck rented succesfully");


}









share|improve this question






















  • That looks like a problem in the DataService.rentTruck method, not the code you have posted. Do you have access to that?
    – Robin Bennett
    Nov 19 at 9:42










  • @RobinBennett yes its the code above
    – Grace Delos Reyes
    Nov 19 at 9:44










  • @GraceDelosReyes what is the unique key in customer table ?
    – Saif
    Nov 19 at 9:52










  • @Saif CustomerID
    – Grace Delos Reyes
    Nov 19 at 9:53










  • @GraceDelosReyes do you key in CustomerId or auto generate ?
    – Saif
    Nov 19 at 9:54















up vote
0
down vote

favorite












I am currently working on a project where I need to be able to rent a truck to a customer but also need to add the customer details if not existing. My problem is even though through the WPF form I input the exact same details of a customer, there would be a new set of data added thus creating a new Customer ID for one person. How would I be able to get the database disregard the existing customer details?



My data service code:



 public class DataService
{
public static void rentTruck(TruckRental toRent, bool isNewCustomer)
{
using (var ctx = new DAD_TruckRental_RGMContext())
{

if (!isNewCustomer)
{

ctx.Entry(toRent.Customer).State = EntityState.Unchanged;//doesnt leave existing customer unchanged
}
ctx.Entry(toRent.Truck).State = EntityState.Modified;
ctx.TruckRental.Add(toRent);
ctx.SaveChanges();
}
}


My cs code:



private void Button_Click(object sender, RoutedEventArgs e)
{

TruckCustomer cust = new TruckCustomer();
cust.Age = int.Parse(ageTextBox.Text);
cust.LicenseNumber = licenseNumberTextBox.Text;
cust.LicenseExpiryDate = licenseExpiryDateDatePicker.SelectedDate.Value.Date;


TruckPerson per = new TruckPerson();
per.Address = addressTextBox.Text;
per.Telephone = telephoneTextBox.Text;
per.Name = nameTextBox.Text;

cust.Customer = per;


int truckId = int.Parse(truckIdTextBox.Text);
IndividualTruck truck = DataService.searchTruckByID(truckId);

decimal priceTotal = decimal.Parse(totalPriceTextBox.Text);

TruckRental toRent = new TruckRental();
toRent.TotalPrice = priceTotal;
toRent.RentDate = rentDateDatePicker.SelectedDate.Value.Date;

toRent.ReturnDueDate = returnDueDateDatePicker.SelectedDate.Value.Date;
toRent.Customer = cust;
toRent.Truck = truck;
truck.Status = "Rented";


DataService.rentTruck(toRent, true);

MessageBox.Show("Truck rented succesfully");


}









share|improve this question






















  • That looks like a problem in the DataService.rentTruck method, not the code you have posted. Do you have access to that?
    – Robin Bennett
    Nov 19 at 9:42










  • @RobinBennett yes its the code above
    – Grace Delos Reyes
    Nov 19 at 9:44










  • @GraceDelosReyes what is the unique key in customer table ?
    – Saif
    Nov 19 at 9:52










  • @Saif CustomerID
    – Grace Delos Reyes
    Nov 19 at 9:53










  • @GraceDelosReyes do you key in CustomerId or auto generate ?
    – Saif
    Nov 19 at 9:54













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I am currently working on a project where I need to be able to rent a truck to a customer but also need to add the customer details if not existing. My problem is even though through the WPF form I input the exact same details of a customer, there would be a new set of data added thus creating a new Customer ID for one person. How would I be able to get the database disregard the existing customer details?



My data service code:



 public class DataService
{
public static void rentTruck(TruckRental toRent, bool isNewCustomer)
{
using (var ctx = new DAD_TruckRental_RGMContext())
{

if (!isNewCustomer)
{

ctx.Entry(toRent.Customer).State = EntityState.Unchanged;//doesnt leave existing customer unchanged
}
ctx.Entry(toRent.Truck).State = EntityState.Modified;
ctx.TruckRental.Add(toRent);
ctx.SaveChanges();
}
}


My cs code:



private void Button_Click(object sender, RoutedEventArgs e)
{

TruckCustomer cust = new TruckCustomer();
cust.Age = int.Parse(ageTextBox.Text);
cust.LicenseNumber = licenseNumberTextBox.Text;
cust.LicenseExpiryDate = licenseExpiryDateDatePicker.SelectedDate.Value.Date;


TruckPerson per = new TruckPerson();
per.Address = addressTextBox.Text;
per.Telephone = telephoneTextBox.Text;
per.Name = nameTextBox.Text;

cust.Customer = per;


int truckId = int.Parse(truckIdTextBox.Text);
IndividualTruck truck = DataService.searchTruckByID(truckId);

decimal priceTotal = decimal.Parse(totalPriceTextBox.Text);

TruckRental toRent = new TruckRental();
toRent.TotalPrice = priceTotal;
toRent.RentDate = rentDateDatePicker.SelectedDate.Value.Date;

toRent.ReturnDueDate = returnDueDateDatePicker.SelectedDate.Value.Date;
toRent.Customer = cust;
toRent.Truck = truck;
truck.Status = "Rented";


DataService.rentTruck(toRent, true);

MessageBox.Show("Truck rented succesfully");


}









share|improve this question













I am currently working on a project where I need to be able to rent a truck to a customer but also need to add the customer details if not existing. My problem is even though through the WPF form I input the exact same details of a customer, there would be a new set of data added thus creating a new Customer ID for one person. How would I be able to get the database disregard the existing customer details?



My data service code:



 public class DataService
{
public static void rentTruck(TruckRental toRent, bool isNewCustomer)
{
using (var ctx = new DAD_TruckRental_RGMContext())
{

if (!isNewCustomer)
{

ctx.Entry(toRent.Customer).State = EntityState.Unchanged;//doesnt leave existing customer unchanged
}
ctx.Entry(toRent.Truck).State = EntityState.Modified;
ctx.TruckRental.Add(toRent);
ctx.SaveChanges();
}
}


My cs code:



private void Button_Click(object sender, RoutedEventArgs e)
{

TruckCustomer cust = new TruckCustomer();
cust.Age = int.Parse(ageTextBox.Text);
cust.LicenseNumber = licenseNumberTextBox.Text;
cust.LicenseExpiryDate = licenseExpiryDateDatePicker.SelectedDate.Value.Date;


TruckPerson per = new TruckPerson();
per.Address = addressTextBox.Text;
per.Telephone = telephoneTextBox.Text;
per.Name = nameTextBox.Text;

cust.Customer = per;


int truckId = int.Parse(truckIdTextBox.Text);
IndividualTruck truck = DataService.searchTruckByID(truckId);

decimal priceTotal = decimal.Parse(totalPriceTextBox.Text);

TruckRental toRent = new TruckRental();
toRent.TotalPrice = priceTotal;
toRent.RentDate = rentDateDatePicker.SelectedDate.Value.Date;

toRent.ReturnDueDate = returnDueDateDatePicker.SelectedDate.Value.Date;
toRent.Customer = cust;
toRent.Truck = truck;
truck.Status = "Rented";


DataService.rentTruck(toRent, true);

MessageBox.Show("Truck rented succesfully");


}






c# sql-server database wpf






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 19 at 9:38









Grace Delos Reyes

376




376












  • That looks like a problem in the DataService.rentTruck method, not the code you have posted. Do you have access to that?
    – Robin Bennett
    Nov 19 at 9:42










  • @RobinBennett yes its the code above
    – Grace Delos Reyes
    Nov 19 at 9:44










  • @GraceDelosReyes what is the unique key in customer table ?
    – Saif
    Nov 19 at 9:52










  • @Saif CustomerID
    – Grace Delos Reyes
    Nov 19 at 9:53










  • @GraceDelosReyes do you key in CustomerId or auto generate ?
    – Saif
    Nov 19 at 9:54


















  • That looks like a problem in the DataService.rentTruck method, not the code you have posted. Do you have access to that?
    – Robin Bennett
    Nov 19 at 9:42










  • @RobinBennett yes its the code above
    – Grace Delos Reyes
    Nov 19 at 9:44










  • @GraceDelosReyes what is the unique key in customer table ?
    – Saif
    Nov 19 at 9:52










  • @Saif CustomerID
    – Grace Delos Reyes
    Nov 19 at 9:53










  • @GraceDelosReyes do you key in CustomerId or auto generate ?
    – Saif
    Nov 19 at 9:54
















That looks like a problem in the DataService.rentTruck method, not the code you have posted. Do you have access to that?
– Robin Bennett
Nov 19 at 9:42




That looks like a problem in the DataService.rentTruck method, not the code you have posted. Do you have access to that?
– Robin Bennett
Nov 19 at 9:42












@RobinBennett yes its the code above
– Grace Delos Reyes
Nov 19 at 9:44




@RobinBennett yes its the code above
– Grace Delos Reyes
Nov 19 at 9:44












@GraceDelosReyes what is the unique key in customer table ?
– Saif
Nov 19 at 9:52




@GraceDelosReyes what is the unique key in customer table ?
– Saif
Nov 19 at 9:52












@Saif CustomerID
– Grace Delos Reyes
Nov 19 at 9:53




@Saif CustomerID
– Grace Delos Reyes
Nov 19 at 9:53












@GraceDelosReyes do you key in CustomerId or auto generate ?
– Saif
Nov 19 at 9:54




@GraceDelosReyes do you key in CustomerId or auto generate ?
– Saif
Nov 19 at 9:54












1 Answer
1






active

oldest

votes

















up vote
0
down vote













Here is my suggestion



1- First check if customer details already exist in db using LicenseNumber
2- The first step will be either null or have details, so if null then add received customer details otherwise update



here is the code



public class DataService
{
public static void rentTruck(TruckRental toRent, bool isNewCustomer, TruckCustomer tcustomer)
{
using (var ctx = new DAD_TruckRental_RGMContext())
{
var ob = ctx.TruckCustomer.Where(c => c.LicenseNumber == customer.LicenseNumber);
if ( ob != null) //not exist
{

//create new here
ctx.TruckCustomer.Add(tcustomer);
}

//exist then just update State
ctx.ob.State = EntityState.Modified;
ctx.AddOrUpdate(ob);
ctx.TruckRental.Add(toRent);
ctx.SaveChanges();
}
}


I hope this can help you






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371813%2fhow-to-leave-existing-data-unchanged-is-a-condition-is-false%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    Here is my suggestion



    1- First check if customer details already exist in db using LicenseNumber
    2- The first step will be either null or have details, so if null then add received customer details otherwise update



    here is the code



    public class DataService
    {
    public static void rentTruck(TruckRental toRent, bool isNewCustomer, TruckCustomer tcustomer)
    {
    using (var ctx = new DAD_TruckRental_RGMContext())
    {
    var ob = ctx.TruckCustomer.Where(c => c.LicenseNumber == customer.LicenseNumber);
    if ( ob != null) //not exist
    {

    //create new here
    ctx.TruckCustomer.Add(tcustomer);
    }

    //exist then just update State
    ctx.ob.State = EntityState.Modified;
    ctx.AddOrUpdate(ob);
    ctx.TruckRental.Add(toRent);
    ctx.SaveChanges();
    }
    }


    I hope this can help you






    share|improve this answer

























      up vote
      0
      down vote













      Here is my suggestion



      1- First check if customer details already exist in db using LicenseNumber
      2- The first step will be either null or have details, so if null then add received customer details otherwise update



      here is the code



      public class DataService
      {
      public static void rentTruck(TruckRental toRent, bool isNewCustomer, TruckCustomer tcustomer)
      {
      using (var ctx = new DAD_TruckRental_RGMContext())
      {
      var ob = ctx.TruckCustomer.Where(c => c.LicenseNumber == customer.LicenseNumber);
      if ( ob != null) //not exist
      {

      //create new here
      ctx.TruckCustomer.Add(tcustomer);
      }

      //exist then just update State
      ctx.ob.State = EntityState.Modified;
      ctx.AddOrUpdate(ob);
      ctx.TruckRental.Add(toRent);
      ctx.SaveChanges();
      }
      }


      I hope this can help you






      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        Here is my suggestion



        1- First check if customer details already exist in db using LicenseNumber
        2- The first step will be either null or have details, so if null then add received customer details otherwise update



        here is the code



        public class DataService
        {
        public static void rentTruck(TruckRental toRent, bool isNewCustomer, TruckCustomer tcustomer)
        {
        using (var ctx = new DAD_TruckRental_RGMContext())
        {
        var ob = ctx.TruckCustomer.Where(c => c.LicenseNumber == customer.LicenseNumber);
        if ( ob != null) //not exist
        {

        //create new here
        ctx.TruckCustomer.Add(tcustomer);
        }

        //exist then just update State
        ctx.ob.State = EntityState.Modified;
        ctx.AddOrUpdate(ob);
        ctx.TruckRental.Add(toRent);
        ctx.SaveChanges();
        }
        }


        I hope this can help you






        share|improve this answer












        Here is my suggestion



        1- First check if customer details already exist in db using LicenseNumber
        2- The first step will be either null or have details, so if null then add received customer details otherwise update



        here is the code



        public class DataService
        {
        public static void rentTruck(TruckRental toRent, bool isNewCustomer, TruckCustomer tcustomer)
        {
        using (var ctx = new DAD_TruckRental_RGMContext())
        {
        var ob = ctx.TruckCustomer.Where(c => c.LicenseNumber == customer.LicenseNumber);
        if ( ob != null) //not exist
        {

        //create new here
        ctx.TruckCustomer.Add(tcustomer);
        }

        //exist then just update State
        ctx.ob.State = EntityState.Modified;
        ctx.AddOrUpdate(ob);
        ctx.TruckRental.Add(toRent);
        ctx.SaveChanges();
        }
        }


        I hope this can help you







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 19 at 10:24









        Saif

        1,0381723




        1,0381723






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371813%2fhow-to-leave-existing-data-unchanged-is-a-condition-is-false%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Costa Masnaga

            Fotorealismo

            Sidney Franklin