数据库中的 EF Core 5 字节 [] 为空
EF Core 5 byte[] null in database
我正在为现有数据库创建 WebAPI。在一个 table 中,主键列从 -1 开始。当我打电话时
var test = await Contexts.CustomerDbContext.ShipCarriers.ToListAsync();
var test2 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == 0);
var test3 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == -1);
在
var test =await Contexts.CustomerDbContext.ShipCarriers.ToListAsync();
前两个条目为空,
var test2 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == 0);
var test3 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == -1);
两者均为空。
这是 class 和我正在使用的配置
public class ShipCarrierConfiguration : IEntityTypeConfiguration<ShipCarrierDbObject>
{
public void Configure(EntityTypeBuilder<ShipCarrierDbObject> builder)
{
}
}
[Table("spedition")]
public class ShipCarrierDbObject
{
[Key]
[Column("speditionid")]
public int? ShipCarrierId {get ;set ;}
[Column("cloudid")]
public string CloudId { get; set; }
[Column("bezeichnung")]
public string Name { get; set; }
[Column("logo")]
public byte[]? Logo { get; set; }
[Column("logoform")]
public byte[]? LogoForm { get; set; }
[Column("logobutton")]
public byte[]? LogoButton { get; set; }
}
据我所知,实体框架在默认情况下从 1 开始 PK,并将值 0 和 -1 作为无效键处理。有没有办法改变这种行为?
编辑:
我找到了导致问题的原因。在数据库中
的字段
[Column("logoform")]
public byte[] LogoForm { get; set; }
[Column("logobutton")]
public byte[] LogoButton { get; set; }
仅这两个条目为空。但我不明白为什么这会阻止加载条目。
我使用的是 PostgreSQL 数据库,两者的字段类型都是 bytea。
因为我无法让 EF 将空值从我的数据库读取到字节[],所以我在数据库中添加了一个 1x1px 透明图像。
我正在为现有数据库创建 WebAPI。在一个 table 中,主键列从 -1 开始。当我打电话时
var test = await Contexts.CustomerDbContext.ShipCarriers.ToListAsync();
var test2 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == 0);
var test3 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == -1);
在
var test =await Contexts.CustomerDbContext.ShipCarriers.ToListAsync();
前两个条目为空,
var test2 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == 0);
var test3 = await Contexts.CustomerDbContext.ShipCarriers.FirstOrDefaultAsync(x => x.ShipCarrierId == -1);
两者均为空。
这是 class 和我正在使用的配置
public class ShipCarrierConfiguration : IEntityTypeConfiguration<ShipCarrierDbObject>
{
public void Configure(EntityTypeBuilder<ShipCarrierDbObject> builder)
{
}
}
[Table("spedition")]
public class ShipCarrierDbObject
{
[Key]
[Column("speditionid")]
public int? ShipCarrierId {get ;set ;}
[Column("cloudid")]
public string CloudId { get; set; }
[Column("bezeichnung")]
public string Name { get; set; }
[Column("logo")]
public byte[]? Logo { get; set; }
[Column("logoform")]
public byte[]? LogoForm { get; set; }
[Column("logobutton")]
public byte[]? LogoButton { get; set; }
}
据我所知,实体框架在默认情况下从 1 开始 PK,并将值 0 和 -1 作为无效键处理。有没有办法改变这种行为?
编辑: 我找到了导致问题的原因。在数据库中
的字段[Column("logoform")]
public byte[] LogoForm { get; set; }
[Column("logobutton")]
public byte[] LogoButton { get; set; }
仅这两个条目为空。但我不明白为什么这会阻止加载条目。 我使用的是 PostgreSQL 数据库,两者的字段类型都是 bytea。
因为我无法让 EF 将空值从我的数据库读取到字节[],所以我在数据库中添加了一个 1x1px 透明图像。