我有一个函数可以将一堆“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
总是以空值返回。这是怎么回事?当我保存它时它不为空时,它是如何变为空的?