在功能上插入行id作为参考

时间:2014-07-09 11:58:14

标签: sql database f# type-providers

我目前正在使用typeproviders在F#中编写数据库平衡模块以获得某种类型的安全性。

我从当前仍处于活动状态的旧数据库中检索。当他们添加一个条目(在这种情况下是一个组织)时,我需要平衡到新数据库。我现在的问题是我需要插入一个组织以及组织引用的成员。

我的问题:如何检索新插入的ID一件好事?以下是我目前的进展。

let updatedOrgs = 
   newOrgs 
   |> Seq.map (fun (org, presi) -> 
      let q = "INSERT INTO members (title, firstname, lastname, phone_number, email, country) VALUES ({0}, {1}, {2}, {3}, {4}, {5}) SELECT SCOPE_IDENTITY()"
      let answer = localDb.DataContext.ExecuteQuery(q, presi.Title, presi.Firstname, presi.Lastname, presi.Phone_number, presi.Email, presi.Country)
      org.President_id <- (Seq.head answer)
      org)    

DB.Orgs.InsertAllOnSubmit(updatedOrgs)

DB.DataContext.SubmitChanges()

注意:在此代码段中,我直接在数据库上执行。我更愿意以类型的方式做,但我甚至无法理解这是怎么做的。

1 个答案:

答案 0 :(得分:0)

女士们,先生们,在审查问题后,解决方案已经找到了我的方法。

问题是,当我使用表格互相引用时,我忘记将组织表中的外键添加到成员表中。

通过这样做,一个人不会识别成员类型,数据库/类型提供者将在插入时解析自动迭代id。