Я использую dapper и хочу использовать Linq, чтобы иметь возможность обновить одно поле с именем status в одной таблице, которую я пытаюсь использовать.
public async Task<Int32> ProcessUnprocessedTransactions(IEnumerable<BomComponentData> items)
{
IEnumerable<BomComponentData> _itemstoBeProcesed = items.Where(w => w.Status == (int)BomStatus.Scanned);
foreach (BomComponentData item in _itemstoBeProcesed)
{
item.Status = (int)BomStatus.Completed;
}
return await database.UpdateAsync(_itemstoBeProcesed);
}
Мой класс выглядит следующим образом:
public class BomComponentData
{
public int Sequence { get; set; }
public string BOMShortName { get; set; }
public string OperationName { get; set; }
public long BomId { get; set; }
public long BOMLineID { get; set; }
public long StockItemID { get; set; }
public string BomLineType { get; set; }
public int Quantity { get; set; }
public long UnitID { get; set; }
public decimal? MultipleOfBaseUnit { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public string Barcode { get; set; }
public long ProductGroupID { get; set; }
public string ProductGroupCode { get; set; }
public int Status { get; set; }
public int BinLocation { get; set; }
public string BinName { get; set; }
public string UOM { get; set; }
public int CalculatedValue { get; set; }
public int BomPickedCount { get; set; }
public int TotalLeftTopick
{
get { return Quantity - BomPickedCount; }
}
public enum BomStatus
{
Listed=1,
Scanned=2,
Confirmed=3,
Processed=4,
Completed=4,
InVisible=5
}
public override string ToString()
{
return Code;
}
}
Но это не работает, если я использую foreach как выше.Я уверен, что он должен обновлять элементы должным образом, но я думаю, что, поскольку я просматриваю отдельные элементы в моем foreach и мой список в обновлении не обновляется правильно.
Все, что я хочу сделать, это отметить элементыкак завершенный и готовый к передаче, я делаю это с помощью столбца состояния и int enum.
Может быть, мне не хватает объявления о том, какой у меня первичный ключ?
Редактировать 2
Когда я использую объявление ключа первичного ключа, я получаю следующее:
Необработанное исключение: System.AggregateException: произошла одна или несколько ошибок.(Ограничение
Редактировать 3
Я установил ключ моего класса, но, как вы видите, у меня есть auotincrement на моей БД, и он все еще падает. Как следует вставитьбыть обработанным?
Изменить 4
Например, я вставляю в базу данных следующим образом.это работа?
List<BomComponentData> _bomList = new List<BomComponentData>();
_bomList.Add(new BomComponentData { Sequence = 1, Barcode = "0000000001498", BinLocation = 23, BinName = "A", BOMShortName = "GYNE-TXX", OperationName = "Example Product", Code = "TB9175CEA", Name = "Tiburon Peri/Gynae Pack-10", Quantity = 1, UOM = "Each" });
await database.InsertAllAsync(_bomList,true);
Я поместил ключ тега для обновления, которое работает нормально, но когда я пытаюсь выполнить вставку с ключом, это не говорит об ошибке ограничения, но обновление работает.Кто-нибудь знает, как я могу решить как вставку, так и обновление в Dapper contrib.