0

Here's my attempt:

public void ReadLot(LotInformation lot)
    {
        try
        {
using (var db = new DDataContext())
            {
                var lotNumDb = db.LotInformation.FirstOrDefault(r => r.lot_number.Equals(r.lot_number));

                if (lotNumDb.lot_number != null && lotNumDb.lot_number.Length == 0)
                {

                    Console.WriteLine("does not exist. yay");
                    var lotInfo = db.LotInformation.FirstOrDefault(r => r.lot_number.Equals(lotNumber));

                }
                else if (lotNumDb.lot_number.ToString().Equals(lot.lot_number))
                {
                    errorWindow.Message = LanguageResources.Resource.Lot_Exists_Already;
                    dialogService.ShowDialog(LanguageResources.Resource.Error, errorWindow);
                }

Here what I want to do:

When the user uploads a file, I check if the deserialized string from memory is a duplicate in the database or not. If it is, pop up a dialog box saying it's a duplicate/already exists and have nothing happen afterward. If it is not a duplicate, proceed with application. Also, if the column in the table in the database is null, store the lot number there and proceed.

I noticed a few things. If the database is empty and I run the above, I get a null exception because I'm trying to find a lot number in db that is not there. How do I change the code above so that if I check in db and the column is null, then just add the number and not throw an exception when comparing. I think that might be the only problem right now.

2 Answers 2

1

I'm not sure what this is supposed to be doing, but you don't need it:

var lotNumDb =
    db.LotInformation.FirstOrDefault(r => r.lot_number.Equals(r.lot_number));

Instead, just check for the existance of the lot_number passed to the method, and use Any to determine whether there were any matches. If it returns true, then the lot number is already in the database.

// Check for duplicates
var isDuplicate = db.LotInformation.Any(r => r.lot_number == lot.lot_number);

if (isDuplicate)
{
    // Inform user that the lot_number already exists
    return;
}

Console.WriteLine("does not exist. yay");
// Store the lot_number in the database
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! That seems to work. I have a side question, how should I prevent the datagrid view from populating/binding if a lot number already exists?
0
bool lotNumDbExists = db.LotInformation(r => r.lot_number.Equals(r.lot_number)).Any;

or .exists

This should return either a true or false of if it exists.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.