この挿入メソッドでNULL例外が発生することがある理由を誰かが説明できますか?言われたように、たまにしかありませんが、それは私にとってさらに混乱を招きます。
テーブルOrderLineには、datacontext(.dbmlファイル)内のテーブルProductへの参照があります。
public void insertNewOrder(string accountNumber, int orderId)
{
var order = orderRep.GetOrderById(orderId);
var orderlineData = orderLineRep.GetOrderLines(order.OrderID);
foreach (var orderLine in orderlineData)
{
int currentStatus = dlvRep.getAxOrderStatusNumber(orderLine.ItemNumber, 0);
string levering = "";
string status = dlvRep.getAxOrderStatus(orderLine.ItemNumber, currentStatus, out levering);
WebsiteOrderStatus insertNew = new WebsiteOrderStatus
{
AccountNumber = accountNumber,
OrderID = orderId,
ItemNumber = orderLine.ItemNumber,
ItemName = orderLine.Product.Name,
FormatName = orderLine.Product.ProductFormatName,
Quantity = orderLine.Quantity,
Price = orderLine.Price,
Status = status,
Levering = levering,
LastUpdatedStatus = currentStatus,
CreatedDate = DateTime.Now
};
db.WebsiteOrderStatus.InsertOnSubmit(insertNew);
db.SubmitChanges();
}
}
例外メッセージ:
Cannot insert the value NULL into column 'FormatName', table 'GWportal.dbo.WebsiteOrderStatus'; column does not allow nulls. INSERT fails.
ステートメントは終了されました。
このコードがProductFormatNameを見つけるのに問題がある製品を検索すると。ProductFormatNameの値はNULLではなく、期待どおりの値になっています(例: "PS3")。
もう一つの奇妙なことは、なぜそれは不平を言っていないのですか?
ItemName = orderLine.Product.Name,
この列はnullも許可しません。