Oracle-插入数据

插入数据

Chloe 具备多种插入数据的方式。
1.实体插入:
该方式插入,如果一个实体存在自增列(序列),会自动将自增列设置到相应的属性上。

User user = new User();
user.Name = "lu";
user.Age = 18;
user.Gender = Gender.Man;
user.CityId = 1;
user.OpTime = DateTime.Now;

/* 会自动将自增 Id 设置到 user 的 Id 属性上 */
user = context.Insert(user);
/*
 * SELECT "USERS_AUTOID"."NEXTVAL" FROM "DUAL"
 * Int32 :P_0 = 15;
   String :P_1 = 'lu';
   Int32 :P_2 = 1;
   Int32 :P_3 = 18;
   DateTime :P_4 = '2016/9/5 9:16:59';
   INSERT INTO "USERS"("ID","NAME","GENDER","AGE","CITYID","OPTIME")     
   VALUES(:P_0,:P_1,:P_2,:P_3,:P_2,:P_4)
 */

2.lambda 方式插入:
此种方式插入的好处是,可以指定列插入,就像写 sql 一样简单。
同时,该方式插入返回表主键值。如果实体主键是自增列,返回值就会是自增值。

/* 返回主键 Id。tips:必须在 lambda 里写 new User() */
int id = (int)context.Insert<User>(() => new User()
{
    Name = "lu",
    Age = 18,
    Gender = Gender.Man,
    CityId = 1,
    OpTime = DateTime.Now
});
/*
 * SELECT "USERS_AUTOID"."NEXTVAL" FROM "DUAL"
 * Int32 :P_0 = 14;
   INSERT INTO "USERS"("NAME","AGE","GENDER","CITYID","OPTIME","ID") 
   VALUES(N'lu',18,1,1,SYSTIMESTAMP,:P_0)
 */