3: .QuerySingle
4: product.Name = \;
5:
6: int rowsAffected = Context.Update
7: .AutoMap(x => x.ProductId)
8: .Where(x => x.ProductId)
9: .Execute();
将ProductId作为AutoMap方法的参数,是要指明ProductId不需要进行映射,因为它不需要被更新。
Insert and update - common Fill method
1: var product = new Product();
2: product.Name = \;
3: product.CategoryId = 1;
4:
5: var insertBuilder = Context.Insert
6:
7: var updateBuilder = Context.Update
8:
9: public void FillBuilder(IInsertUpdateBuilder
10: {
11: builder.Column(x => x.Name);
12: builder.Column(x => x.CategoryId);
13: }
14:
15: Delete
删除数据 使用SQL语句:
1: int rowsAffected = Context.Sql(@\
2: where ProductId = 1\
3: .Execute();
使用builder:
1: int rowsAffected = Context.Delete(\)
2: .Where(\, 1)
3: .Execute();
FluentData入门(六)--存储过程和事务
存储过程 使用SQL语句: 1: var rowsAffected = Context.Sql(\)
2: .CommandType(DbCommandTypes.StoredProcedure)
3: .Parameter(\, 1)
4: .Parameter(\, \)
5: .Execute();
使用builder:
1: var rowsAffected = Context.StoredProcedure(\)
2: .Parameter(\, \)
3: .Parameter(\, 1).Execute();
使用builder,并且自动映射
1: var product = Context.Sql(\)
2: .QuerySingle
3:
4: product.Name = \;
5:
6: var rowsAffected = Context.StoredProcedure
7: .AutoMap(x => x.CategoryId).Execute();
使用Lambda表达式
1: var product = Context.Sql(\)
2: .QuerySingle
3: product.Name = \;
4:
5: var rowsAffected = Context.StoredProcedure
6: .Parameter(x => x.ProductId)
7: .Parameter(x => x.Name).Execute();
事务
FluentData 支持事务。如果使用事务,最好使用using语句将代码包起来,已保证连接会被关闭。默认的,如果查询过程发生异常,如事务不会被提交,会进行回滚。
1: using (var context = Context.UseTransaction(true))
2: {
3: context.Sql(\)
4: .Parameters(\, 1)
5: .Execute();
6:
7: context.Sql(\)
8: .Parameters(\, 2)
9: .Execute();
10:
11: context.Commit();
12: }
13:
实体工厂
实体工厂负责在自动映射的时候,生成POCO实例。如果需要生成复杂的实例,可以自定义实体工厂:
1: List
2: .Sql(\)
3: .QueryMany
4:
5: public class CustomEntityFactory : IEntityFactory
6: {
7: public virtual object Resolve(Type type)
8: {
9: return Activator.CreateInstance(type);
10: }
11: }