zoukankan      html  css  js  c++  java
  • [EntityFramework]记录Linq中如何比较数据库中Timestamp列的方法(如大于0x00000000000007D1的记录)

    Timestamp对于EF实体的类型是byte[]
    class Program
        {
            static void Main(string[] args)
            {
                using (var context = new DbContext())
                {
                    var val = BitConverter.GetBytes(0x00000000000007D1).Reverse().ToArray();
                    var byteArr = Enumerable.Range(0, 8 - val.Length)
                        .Select(c => (byte)0)
                        .Concat(val).ToArray();
                    //使用扩展方法,查询大于0x00000000000007D1的记录
                    var query = context.TestTable
                        .Where(c => c.RowVersion.Compare(byteArr) > 0)
                        .ToList();
                }
            }
        }
        static class ArrayExtensions
        {
            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);
            }
        }
        public class TestTable
        {
            [Key]
            public int id { get; set; }
    
            [Timestamp]
            public byte[] RowVersion { get; set; }
        }

     生成的sql如下

    exec sp_executesql N'SELECT 
        [Extent1].[id] AS [id], 
        [Extent1].[RowVersion] AS [RowVersion]
        FROM [dbo].[TestTable] AS [Extent1]
        WHERE [Extent1].[RowVersion] > @p__linq__0',N'@p__linq__0 varbinary(8000)',@p__linq__0=0x00000000000007D1

      

  • 相关阅读:
    正则表达式
    正则表达式的lastIndex属性
    vuejs 在移动端调起键盘并触发‘前往’按钮
    适配手机端之 rem
    prototype和_proto_
    ES6 class的继承-学习笔记
    js-null 、undefined
    ES6 class的基本语法-学习笔记
    chrome插件 - Manifest文件中的 background
    别踩白块
  • 原文地址:https://www.cnblogs.com/wpycs/p/8386528.html
Copyright © 2011-2022 走看看