【发布时间】:2019-11-29 15:17:22
【问题描述】:
当我尝试将新实体添加到数据库中时出现此错误。实体名称为DestuffedContainer。该实体及相关实体的定义如下:
DestuffedContainer:
[Table("DestuffedContainer")]
public class DestuffedContainer
{
public long DestuffedContainerId { get; set; }
public int Index { get; set; }
public string Description { get; set; }
public int? PackageQuantity { get; set; }
public string PackageType { get; set; }
public double? CBM { get; set; }
public string Location { get; set; }
public string MarksAndNumber { get; set; }
public int? ManifestWeight { get; set; }
public int? FoundWeight { get; set; }
public int? ManifestQuantity { get; set; }
public string ConsigneeName { get; set; }
public string Remarks { get; set; }
public string InvoiceFound { get; set; }
public string PackageFound { get; set; }
public long TellySheetId { get; set; }
public TellySheet TellySheet { get; set; }
public long ContainerIndexId { get; set; }
public ContainerIndex ContainerIndex { get; set; }
}
电视片:
[Table("TellySheet")]
public class TellySheet
{
public TellySheet()
{
DestuffedContainers = new List<DestuffedContainer>();
}
public long TellySheetId { get; set; }
public string TellyClerk { get; set; }
public DateTime? DestuffDate { get; set; }
public string DayNight { get; set; }
public long ShippingAgentId { get; set; }
public ShippingAgent ShippingAgent { get; set; }
public List<DestuffedContainer> DestuffedContainers { get; set; }
}
容器索引:
[Table("ContainerIndex")]
public class ContainerIndex
{
public long ContainerIndexId { get; set; }
public string BLNo { get; set; }
public int? IndexNo { get; set; }
public double? BLGrossWeight { get; set; }
public string Description { get; set; }
public string MarksAndNumber { get; set; }
public string ShippingLine { get; set; }
public bool? IsDestuffed { get; set; }
public string AuctionLotNo { get; set; }
public long? ContainerId { get; set; }
public Container Container { get; set; }
public DeliveryOrder DeliveryOrder { get; set; }
public OrderDetail OrderDetail { get; set; }
public DestuffedContainer DestuffedContainer { get; set; }
public Auction Auction { get; set; }
}
当我尝试添加去塞容器列表时,以下代码行中出现错误:
var dstfContainers = new List<DestuffedContainer>();
_tellySheetRepo.Add(tellySheet);
foreach (var container in containers)
{
var destuff = new DestuffedContainer
{
TellySheetId = tellySheet.TellySheetId,
ContainerIndexId = container.ContainerIndexId,
Index = container.IndexNumber ?? 0,
Description = container.Description,
PackageQuantity = container.Package,
PackageType = container.PackageType,
CBM = container.CBM,
ManifestWeight = container.ManifestWeight > 0 ? Convert.ToInt32(container.ManifestWeight) : 0,
FoundWeight = container.FoundWeight > 0 ? Convert.ToInt32(container.FoundWeight) : 0,
MarksAndNumber = container.MarksAndNumber,
Location = container.Location,
Remarks = container.Remarks,
InvoiceFound = container.InvoiceFoud,
PackageFound = container.PackageFoud
};
dstfContainers.Add(destuff);
var index = _cIndexRepo.Find(container.ContainerIndexId);
if (index != null)
{
index.IsDestuffed = true;
_cIndexRepo.Update(index);
}
}
_destuffRepo.AddRange(dstfContainers);
我不确定这个错误是什么意思,因为我没有明确指定 destuffedcontainer 实体的主键值,默认情况下它是 0。实体框架应该将其作为插入项选择,但它会引发错误。
几天前它工作正常,但我不确定自从导致此错误后发生了什么变化。
我正在使用 Entity Framework Core 对我的实体进行建模。我尝试了几种解决方案,但似乎都没有奏效。对于解决此问题的任何帮助,我将不胜感激。
编辑
似乎当我将 DestuffedContainer 表中的外键 ContainerIndexId 值分配给实体时,出现此错误。我不确定它是如何相关的。
【问题讨论】:
-
如果您将 ID 列命名为
Id而不是TellySheetId等,它是否有效? -
It was working fine few days ago你能用git显示过去几天发生了什么变化吗? -
我的代码存储库位于 Azure DevOps 中。我将更改 Destuffed Container 实体的主键 Id 名称,看看它是否有效。
-
不——还是同样的错误。
-
“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'DestuffedContainer' 中插入标识列的显式值。”这是我看到的错误。
标签: c# asp.net-core entity-framework-core