• LinqToDB之InsertOrUpdate方法


    InsertOrUpdate有两个重载方法

    1、 InsertOrUpdate<T>(ITable<T>, Expression<Func<T>>, Expression<Func<T, T>>)

      此方法更新现有记录,如果不存在,则插入新记录,查询条件为表的主键。

    声明:

    public static int InsertOrUpdate<T>(this ITable<T> target, Expression<Func<T>> insertSetter, Expression<Func<T, T>> onDuplicateKeyUpdateSetter)

    参数:

    类型 名称 详细信息
    ITable<T>
    target
    目标表
    System.Linq.Expressions.Expression<System.Func<T>>
    insertSetter 插入数据的构造函数,表达式仅支持初始化目标表所包含的字段。
    System.Linq.Expressions.Expression<System.Func<T, T>> onDuplicateKeyUpdateSetter 更新数据的构造函数,表达式仅支持初始化目标表所包含的字段,接受表名作为参数。

    返回值:int类型,受影响的记录条数

    类型参数:T  表在model中所对应的类型

    使用示例:

    using (var db = new DataConnection())
    {
        db.GetTable<TestTable3>()
            .InsertOrUpdate(
                () => new TestTable3
                {
                    ID   = 5,
                    Name = "Crazy Frog",
                },
                t => new TestTable3
                {
                    Name = "Crazy Frog IV",
                });
    }

    对应的SQL语句为:

    UPDATE
        [TestTable3] [t1]
    SET
        [t1].[Name] = 'Crazy Frog IV'
    WHERE
        [t1].[ID] = 5
    <!--如果受影响的记录数为0,则对应为下面的-->
    INSERT INTO [TestTable3]
    (
        [ID],
        [Name]
    )
    VALUES
    (
        5,
        'Crazy Frog'
    )

    2、 InsertOrUpdate<T>(ITable<T>, Expression<Func<T>>, Expression<Func<T, T>>, Expression<Func<T>>)

      此方法更新现有记录,如果不存在,则插入新记录,查询条件为指定的字段。

    声明:

    public static int InsertOrUpdate<T>(this ITable<T> target, Expression<Func<T>> insertSetter, Expression<Func<T, T>> onDuplicateKeyUpdateSetter, Expression<Func<T>> keySelector)

    参数:

    类型 名称 详细信息
    ITable<T>
    target
    目标表
    System.Linq.Expressions.Expression<System.Func<T>>
    insertSetter 插入数据的构造函数,表达式仅支持初始化目标表所包含的字段。
    System.Linq.Expressions.Expression<System.Func<T, T>> onDuplicateKeyUpdateSetter 更新数据的构造函数,表达式仅支持初始化目标表所包含的字段,接受表名作为参数。
    System.Linq.Expressions.Expression<System.Func<T>> keySelector 键字段选择器,指定必须使用哪些字段和值作为在INSERT和UPDATE操作之间进行选择的关键字段。表达式只支持目标表中所包含的字段初始化。指定的键字段值将被操作类型选择器用作键值。

    返回值:int类型,受影响的记录条数

    类型参数:T  表在model中所对应的类型

    使用示例:

    using (var db = new DataConnection())
    {
        db.GetTable<TestTable3>()
            .InsertOrUpdate(
                () => new TestTable3
                {
                    ID   = 5,
                    Name = "Crazy Frog",
                    Age = 25
                },
                t => new TestTable3
                {
                    Age = 30
                },
                () => new TestTable3
                {
                    Name = "Jimmy"
                }
            );
    
    }        

     对应的SQL语句为:

    UPDATE
        [TestTable3] [t1]
    SET
        [t1].[Age] = 30
    WHERE
        [t1].[Name] = “Jimmy”
    <!--如果受影响的条数为0,则对应下面的-->
    INSERT INTO [TestTable3]
    (
        [ID],
        [Name]
    )
    VALUES
    (
        5,
        'Crazy Frog'
    )
  • 相关阅读:
    VB将输入文本框的数字分割并按十六进制发送
    MATLAB中利用摄像头抓图进行编程
    MATLAB中利用摄像头抓图进行编程
    LCD圆弧绘制算法~基于逐点比较算法,入口参数:弧线起点、终点(逆时针方向)、圆心
    LCD圆弧绘制算法~基于逐点比较算法,入口参数:弧线起点、终点(逆时针方向)、圆心
    kalman滤波的相关理解及MATLAB程序注解
    kalman滤波的相关理解及MATLAB程序注解
    The specified JTAG device (in the Target Connection tab) is invalid. Use the Run|Run... or Run|Debug
    The specified JTAG device (in the Target Connection tab) is invalid. Use the Run|Run... or Run|Debug
    The specified JTAG device (in the Target Connection tab) is invalid.
  • 原文地址:https://www.cnblogs.com/zlxd1990/p/8988963.html
Copyright © 2020-2023  润新知