我试图检索SQL记录中,其中rowversion大于一定值时。 在SQL这是微不足道的(WHERE RowVersion> X),然而不那么在动态LINQ查询。
在我的EF模型我已经申请时间戳注释到相应的列。
[Timestamp]
public byte[] RowVersion { get; set; }
和所使用的静态比较的字节[]比较扩展(源:( https://stackoverflow.com/a/42502969/3424480 )
static class MiscExtension
{
public static int Compare(this byte[] b1, byte[] b2)
{
if (b1 == null && b2 == null)
return 0;
else if (b1 == null)
return -1;
else if (b2 == null)
return 1;
return ((IStructuralComparable)b1).CompareTo(b2, Comparer<byte>.Default);
}
}
我试过,没有运气下面的风格动态LINQ表达式(maxRV是小端字节[])。
.Where("RowVersion.Compare(@0) > 0", maxRV);
这将引发“不适用聚合方法‘比较’存在”一些经过研究我认为这是因为“比较”是不是有效的枚举法。 在那里我可能出现了问题/替代方法任何指针赞赏。