【发布时间】:2021-12-15 01:40:02
【问题描述】:
我有 4 个表,IndividualTruck、TruckModel、TruckFeature 和 TruckFeatureAssociation。
IndividualTruck 具有 TruckModel 类型的属性 TruckModel。在分配从 WPF 表单检索的其他属性后,我创建关系并将这些新记录添加到如下所示的相关表中。
IndividualTruck truck = new IndividualTruck();
truck.Colour = Colour; #various other attributes
TruckModel model = new TruckModel();
model.Manufacturer = new Manufacturer; #various other attributes
truck.TruckModel = model; #creating the relationship
#this function checks adds the new truck and saves the table
DAO.AddNewTruck(truck, true);
TruckFeature 表类有int FeatureID、string Description 和TruckFeatureAssociation : ICollection<TruckFeatureAssociation>
TruckFeatureAssociation 表类有int TruckID、int FeatureID、Feature: TruckFeature 和Truck: IndividualTruck。
我有一个列表框,可以从表格TruckFeature 中选择多个功能,它是一个有四个条目的表格(空调、装载后门、警报系统和无钥匙门)。
我尝试遍历所选功能列表并检索选择分配的FeatureID 以将featureID 分配给关联表,该关联表是两列TruckID 和FeatureID 都是主键.
当我将数据保存到表中时,出现 SQL 错误
SqlException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“TruckFeature”中插入标识列的显式值。
无法插入显式值,因为插入已关闭
如何在不更改此插入关闭条件的情况下创建此关系? TIA。抱歉,我对 .NET 和 C# 很陌生。
更新:
for (int i = featureListBox.SelectedItems.Count - 1; i >= 0; --i)
{
TruckFeatureAssociation association = new TruckFeatureAssociation();
TruckFeature truckFeature = new TruckFeature();
string feature = featureListBox.SelectedItems[i].ToString();
truckFeature = DAO.SearchBySelected(feature);
association.Feature = truckFeature;
association.Truck = truck;
DAO.addNewFeatureAssc(association);
}
和
public static void addNewFeatureAssc(TruckFeatureAssociation ff)
{
using (DAD_BaldipContext ctx = new DAD_BaldipContext())
{
ctx.TruckFeatureAssociation.Add(ff);
ctx.SaveChanges();
}
}
错误显示在 ctx.savechanges() 旁边;
【问题讨论】:
-
请引用确切的错误。它还应该说明涉及哪个表。此外,查看类而不是描述以及
AddNewTruck的代码以及了解确切的 EF 版本和数据库提供程序将有所帮助。最后,这里发生的只是您尝试将具有非默认键值的记录添加到具有标识列的表中。 -
SqlException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“TruckFeature”中插入标识列的显式值。 EF v4.7.2
-
没有 EF 4.7.2。 .Net 版本与 EF 版本不同。也就是说,它必须是 EF 的 a .Net 框架版本,这意味着您根本没有将列配置为 EF 模型中的标识列。
标签: c# .net wpf entity-framework dao