Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在所有表中的MySQL数据库中插入数据_Mysql_Database_F# - Fatal编程技术网

在所有表中的MySQL数据库中插入数据

在所有表中的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

我再次向您寻求帮助。:) 我正在尝试使用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) (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()