字节数组总是返回null
本文关键字:返回 null 字节数 数组 字节 | 更新日期: 2023-09-27 18:14:52
我有一个函数来写一堆"ImageSignatures"到DbContext:
using (var db = new ImageContext())
{
foreach (var file in files)
{
var sig = new ImageSignature
{
FileName = file,
Signature = Signature(file),
};
Console.WriteLine("{0}: {1}", Path.GetFileName(sig.FileName), Sig2Str(sig.Signature));
if (sig.Signature != null)
{
db.Images.Add(sig);
}
}
try
{
records = db.SaveChanges(); // where the heck is this saving to!?
}
...
其中Signature
属性定义为
[MinLength(420)]
[MaxLength(420)]
[Required]
public sbyte[] Signature { get; set; }
如果我在添加sig
之前放置一个断点,我可以看到它不是空的,而是一个420字节的数组,正如我所期望的。
在以后运行应用程序时,我尝试遍历我插入的ImageSignatures,
foreach (var img1 in db.Images)
{
var set = new List<string> { img1.FileName };
foreach (var img2 in db.Images)
{
if (Distance(img1.Signature, img2.Signature) < 0.6)
{
set.Add(img2.FileName);
}
}
if (set.Count > 1)
{
dupeSets.Add(set);
}
}
但是Signature
总是返回null。它怎么了?我保存它的时候,它不是空的,它是怎么变成空的?
确保在处理DbContext之前已将更改保存到DbContext,这将确保这些更改持久化到底层数据存储中:
using (var db = new ImageContext())
{
foreach (var file in files)
{
var sig = new ImageSignature
{
FileName = file,
Signature = Signature(file),
};
Console.WriteLine("{0}: {1}", Path.GetFileName(sig.FileName), Sig2Str(sig.Signature));
db.Images.Add(sig);
}
db.SaveChanges();
}