这是我的尝试:
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);
}
这就是我想要做的事情:
当用户上传文件时,我会检查内存中反序列化的字符串是否在数据库中是重复的。如果是,则弹出一个对话框,说它是重复的/已经存在,之后什么也没发生。如果不是重复,请继续申请。此外,如果数据库中表中的列为null,则将批号存储在那里并继续。
我注意到了一些事情。如果数据库是空的并且我运行上面的操作,我会得到一个null异常,因为我试图在db中找到一个不存在的批号。如何更改上面的代码,以便在我检入db并且列为null时,只需添加数字,而不是在比较时抛出异常。我认为这可能是目前唯一的问题。
答案 0 :(得分:1)
我不确定这应该做什么,但你不需要它:
var lotNumDb =
db.LotInformation.FirstOrDefault(r => r.lot_number.Equals(r.lot_number));
相反,只需检查传递给方法的lot_number
是否存在,然后使用Any
确定是否存在任何匹配项。如果它返回true
,则批号已经在数据库中。
// 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
答案 1 :(得分:0)
bool lotNumDbExists = db.LotInformation(r => r.lot_number.Equals(r.lot_number)).Any;
或.exists
如果存在,则返回true或false。