先说说 insert 吧.

当EF执行insert时,如果我们传入的对象是有关联(1对多等)的话,它会执行多个语句 insert到多个表,

并且再select出来填充我们的属性(因为有些column默认值是sql设定的,比如id等,我们insert后要有最新的数据丫).

using (EFDB db = new EFDB())
{              
    db.prods.Add(new Prod
    {
        code = "mk100",
        name = "name",
        detail = new ProdDetail //1对1关系当 prod_detail table
        {
            fullDescription = "des"
        }
    });               
    db.SaveChanges();
}
Opened connection at 2014/9/28 15:33:53 +08:00
Started transaction at 2014/9/28 15:33:53 +08:00
SET SESSION sql_mode='ANSI';INSERT INTO `prod`(
`code`, 
`name`) VALUES (
@gp1, 
@gp2);
SELECT
`id`
FROM `prod`
 WHERE  row_count() > 0 AND `id`=last_insert_id()
-- @gp1: 'mk100' (Type = String, IsNullable = false, Size = 5)
-- @gp2: 'name' (Type = String, IsNullable = false, Size = 4)
-- Executing at 2014/9/28 15:33:53 +08:00
-- Completed in 13 ms with result: EFMySqlDataReader

INSERT INTO `prod_detail`(
`prod_id`, 
`id`, 
`fullDescription`) VALUES (
7, 
0, 
@gp1)
-- @gp1: 'des' (Type = String, IsNullable = false, Size = 3)
-- Executing at 2014/9/28 15:33:53 +08:00
-- Completed in 15 ms with result: 1

Committed transaction at 2014/9/28 15:33:53 +08:00
Closed connection at 2014/9/28 15:33:53 +08:00
Disposed transaction at 2014/9/28 15:33:53 +08:00
View Code

相关文章:

  • 2022-12-23
  • 2021-08-05
  • 2022-12-23
  • 2021-11-22
  • 2022-12-23
  • 2021-07-11
  • 2021-07-31
猜你喜欢
  • 2022-12-23
  • 2022-01-24
  • 2022-12-23
  • 2021-06-29
  • 2021-10-29
  • 2022-12-23
  • 2021-11-26
相关资源
相似解决方案