Tag: rowversion

将sql server rowversion转换为long或ulong?

rowversion(timestamp)数据类型的正确类型是什么? 我知道这是8个字节,但我找不到MSDN中的链接,它告诉它是有符号还是无符号长。 我应该使用哪些代码,它是否重要? byte[] SqlTimeStamp; long longConversion; longConversion = BitConverter.ToInt64(SqlTimeStamp,0); TimeStamp = BitConverter.GetBytes(longConversion); ulong ulongConversion; ulongConversion = BitConverter.ToUInt64(SqlTimeStamp,0); TimeStamp = BitConverter.GetBytes(ulongConversion);

如何根据rowversion / timestamp值查询Code First实体?

我遇到过一个案例,其中与LINQ to SQL相当不错的东西似乎对Entity Framework来说非常迟钝(或者可能是不可能的)。 具体来说,我有一个包含rowversion属性的实体(用于版本控制和并发控制)。 就像是: public class Foo { [Key] [MaxLength(50)] public string FooId { get; set; } 1541535334 [ConcurrencyCheck] public byte[] Version { get; set; } } 我希望能够将实体作为输入,并找到最近更新的所有其他实体。 就像是: Foo lastFoo = GetSomeFoo(); var recent = MyContext.Foos.Where(f => f.Version > lastFoo.Version); 现在,在数据库中这将起作用:两个rowversion值可以相互比较而没有任何问题。 在使用LINQ to SQL之前我做了类似的事情,它将rowversion映射到System.Data.Linq.Binary ,可以进行比较。 (至少在表达式树可以映射回数据库的程度上。) 但在Code First中,属性的类型必须是byte[] 。 并且两个数组无法与常规比较运算符进行比较。 有没有其他方法来编写LINQ to […]