我遇到这个奇怪的问题,我尝试使用nullable
将无符号Entity Framework 6
字段的值保存到db中,即使我发送要保存的实际值,它也总是在Db中将该值设置为NULL。我不确定我在做什么错。
我有实体类:
[Table("Order")]
public class OrderForComparision
{
[Key]
public string TicketNumber { get; set; }
public unint? OriginID { get; set; }
}
我有如下表创建查询:
CREATE TABLE [dbo].[Order](
[TicketNumber] [varchar](50) NOT NULL,
[OriginID] [bigint] NULL,
CONSTRAINT [PK_OrderId] PRIMARY KEY CLUSTERED
(
[TicketNumber] ASC
))
我以这种方式更新表:
try
{
using (var dbCon = GetDbContext())
{
var orderInDb = await dbCon.Orders.FirstOrDefaultAsync(x => x.TicketNumber == order.TicketNumber);
if (orderInDb == null)
{
orderInDb = new OrderForComparision
{
TicketNumber = order.TicketNumber,
OriginID = order.OriginID ?? null,
};
dbCon.Orders.Add(orderInDb);
}
else
{
orderInDb.OriginID = order.OriginID ?? null;
}
await dbCon.SaveChangesAsync();
}
}
catch (Exception ex)
{
throw ex;
}
即使我将值传递给该字段,我也只会在Db中看到NULL
。当我在调试时检查对象时,会看到以下内容:
ColumnName Value Type
OriginID 3823 uint?
我尝试过:
OriginID == null ? (uint?)null : order.OriginID.Value
,
OriginID = order.OriginID.HasValue ? order.OriginID.Value : (uint?)null
和
OriginID = order.OriginID ?? null
。到目前为止,还没有任何东西对我有用。可能是我的Db或我的储蓄方式有问题吗?我只是想不出这个简单的怪异问题。
您总是发送空值,这就是为什么它总是保存空值的原因。