zoukankan      html  css  js  c++  java
  • 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'
    )
  • 相关阅读:
    codeforces 189A
    hdu 2085
    hdu 2083
    cf 1237 C2. Balanced Removals (Harder)
    cf 1244 D. Paint the Tree
    cf 1241 E. Paint the Tree(DP)
    cf 1241 D. Sequence Sorting(思维)
    cf1228 D Complete Tripartite(哈希)
    Windows10 与 WSL(Ubuntu)的文件互访
    Ubuntu下运行python文件
  • 原文地址:https://www.cnblogs.com/zlxd1990/p/8988963.html
Copyright © 2011-2022 走看看