在所有表中的MySQL数据库中插入数据
我再次向您寻求帮助。:) 我正在尝试使用F#将数据插入MySQL数据库。 我的模式包括3个表(实验、基因和结果): 现在,我尝试使用SQLProvider将数据添加到数据库中在所有表中的MySQL数据库中插入数据,mysql,database,f#,Mysql,Database,F#,我再次向您寻求帮助。:) 我正在尝试使用F#将数据插入MySQL数据库。 我的模式包括3个表(实验、基因和结果): 现在,我尝试使用SQLProvider将数据添加到数据库中 let db = sql.GetDataContext() let gene_tb = db.Vp32.Genes let exp_tb = db.Vp32.Experiments let results_tb = db.Vp32.Results let createNewInput (genename: string
let db = sql.GetDataContext()
let gene_tb = db.Vp32.Genes
let exp_tb = db.Vp32.Experiments
let results_tb = db.Vp32.Results
let createNewInput (genename: string) (expname: string) res =
let newRes = results_tb.Create()
let newGene = gene_tb.Create()
let newExp = exp_tb.Create()
newGene.GeneName <- genename
newExp.ExpName <- expname
newRes.ResultVal <- Some res
createNewInput "test1" "experiment_test1" (float32 999.5)
db.SubmitUpdates()
let db=sql.GetDataContext()
让基因_tb=db.Vp32.Genes
设exp_tb=db.Vp32.0
让结果_tb=db.Vp32.results
让createNewInput(genename:string)(expname:string)res=
让newRes=results\u tb.Create()
让newGene=gene_tb.Create()
让newExp=exp_tb.Create()
newGene.GeneName我实际上没有尝试过这个,所以它可能不正确-但我认为一个可行的策略是首先将实验
记录(使用ExpName
)与基因
记录一起插入GeneName
然后,当您调用SubmitUpdates
时,提供者应该插入两个记录(这应该可以工作,因为它们具有所需的所有字段),并填写插入记录的实验id
和基因id
属性
然后您就有了这些ID,因此您应该可以创建一个新的结果
记录,并使用所有正确的ID插入它,然后再次调用SubmitUpdates
(可能有更好的方法,但这可以奏效……好吧,谢谢你分享你的想法!)我试图这样做,但现在我得到了“更新列表中遇到未更改的实体-这应该是不可能的!”>@伊莎贝拉纳瓦罗听起来不太好!您可以编辑您的问题并包含更新的代码吗?通常在堆栈溢出时,最好在您自己的问题中添加一个解决方案作为答案,然后接受它,而不是将其编辑到问题中。
let db = sql.GetDataContext()
let gene_tb = db.Vp32.Genes
let exp_tb = db.Vp32.Experiments
let results_tb = db.Vp32.Results
let createNewInput (genename: string) (expname: string) res =
let newRes = results_tb.Create()
let newGene = gene_tb.Create()
let newExp = exp_tb.Create()
newGene.GeneName <- genename
newExp.ExpName <- expname
newRes.ResultVal <- Some res
createNewInput "test1" "experiment_test1" (float32 999.5)
db.SubmitUpdates()
let addNewExp (expname: string)=
let newExp = exp_tb.Create()
newExp.ExpName <- expname
db.SubmitUpdates()
let addNewGene (genename: string)=
let newGene = gene_tb.Create()
newGene.GeneName <- genename
db.SubmitUpdates()
let addNewRes (expName: string) (geneName: string) res =
let tempExpId =
query {
for experiment in exp_tb do
where (experiment.ExpName = expName)
select experiment.ExpId
}
|> Seq.head
let tempGeneId =
query {
for gene in gene_tb do
where (gene.GeneName = geneName)
select gene.GeneName
}
|> Seq.toArray |> String.concat ""
let newRes = results_tb.Create()
newRes.ExpId <- tempExpId
newRes.GeneId <- tempGeneId
newRes.ResultVal <- Some res
db.SubmitUpdates()