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> |
|
目标表 |
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> |
|
目标表 |
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' )