【发布时间】:2023-03-22 23:40:01
【问题描述】:
我在 Visual Studio 2008 中使用 ASP.NET MVC2。我相信 SQL Server 是 2005。
我有两个表:EquipmentInventory 和 EquipmentRequested
- EquipmentInventory 有一个主键 sCode
- EquipmentRequested 有一个 外键称为 sCode 基于 EquipmentInventory 中的 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'。”
显然我做错了什么,但到目前为止,我似乎无法找到问题所在。
有人对如何将记录正确插入具有外键引用的表有一些提示吗?
更新:
我正在使用数据实体框架。
更新:
感谢 Rob 的回答,我能够找出我的错误。
正如 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();
有没有人看到更好的方法来做到这一点?
【问题讨论】:
标签: asp.net sql-server