我在Visual Studio 2008中使用ASP.NET MVC2我相信,SQL Server是2005錯誤在ASP.NET中插入與外鍵數據到SQL Server數據庫(沒找到主鍵)
我有兩個表:EquipmentInventory和EquipmentRequested
- EquipmentInventory具有SCODE的主鍵
- EquipmentRequested具有基於在EquipmentInventory SCODE稱爲SCODE一個 外鍵。
我想下面的代碼(大量的非培訓相關的代碼刪除):
try
{
EChODatabaseConnection myDB = new EChODatabaseConnection();
//this section of code works fine. The data shows up in the database as expected
foreach (var equip in oldData.RequestList)
{
if (equip.iCount > 0)
{
dbEquipmentInventory dumbEquip = new dbEquipmentInventory();
dumbEquip.sCode = equip.sCodePrefix + newRequest.iRequestID + oldData.sRequestor;
myDB.AddTodbEquipmentInventorySet(dumbEquip);
}
}
myDB.SaveChanges(); //save this out immediately so we can add in new requests
//this code runs fine
foreach (var equip in oldData.RequestList)
{
if (equip.iCount > 0)
{
dbEquipmentRequested reqEquip = new dbEquipmentRequested();
reqEquip.sCode = equip.sCodePrefix + newRequest.iRequestID + oldData.sRequestor;
myDB.AddTodbEquipmentRequestedSet(reqEquip);
}
}
//but when I try to save the above result, I get an error
myDB.SaveChanges();
OLDDATA被傳遞給函數。 newRequest是添加到「非相關」表的結果。 newRequest.iRequestID確實有一個值。
在看reqEquip是觀察窗口,我注意到EquipInventory爲空。
我收到的錯誤信息是: 「在‘EChODatabaseConnection.dbEquipmentRequestedSet’參加‘FK_EquipmentRequested_EquipmentInventory_sCode’關係的實體相關的0‘EquipmentInventory’被發現1‘EquipmentInventory’的預期。」。
顯然我做錯了事,但到目前爲止,我似乎無法找到我有什麼問題。
任何人都有關於如何正確插入記錄到具有外鍵引用的表的提示?
UPDATE:
我使用的數據實體框架。
UPDATE:
多虧了羅布的回答,我能找出我的錯誤。 正如Rob所說,我需要爲外鍵設置我的參考。
我的編碼結果如下:
foreach (var equip in oldData.RequestList)
{
if (equip.iCount > 0)
{
dbEquipmentInventory dumbEquip = new dbEquipmentInventory();
dumbEquip.sCode = equip.sCodePrefix + newRequest.iRequestID + oldData.sRequestor;
myDB.AddTodbEquipmentInventorySet(dumbEquip);
//add in our actual request items
dbEquipmentRequested reqEquip = new dbEquipmentRequested();
reqEquip.EquipmentInventory = dumbEquip;
myDB.AddTodbEquipmentRequestedSet(reqEquip);
}
}
myDB.SaveChanges();
有誰看到這樣做的更好的方法?
我正在使用數據實體框架。 – 2011-05-19 15:46:41
這幫助我弄清楚我做錯了什麼。 – 2011-05-19 16:15:31