Question

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.

Était-ce utile?

La solution

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

Autres conseils

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top