ここもう一度私は助けを求めています。 :) F#を使用してMySQLデータベースにデータを挿入しようとしています。 私のスキーマは、3つのテーブル(実験、遺伝子および結果)が含まれます。今すぐすべてのテーブルのMySQLデータベースにデータを挿入してください
Experiments | Results | Gene
Experiment id | Experiment id | Gene id
Experiment name | Gene id | Gene Name
| Value |
を、私はSQLProviderを使用してDBにデータを追加しようとしています。
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()
私はそれが結果値が実験や遺伝子IDSにリンクされていることを理解させるために問題を抱えています。送信しようとするとエラーが発生します: "フィールド 'Exp_id'にはデフォルト値"がありません。まあ、それは他のテーブルのIDでなければならないので、デフォルト値はありません。ああ、..これらのIDは自動増加に設定されています。 さらに、新しいデータを追加するたびに、実験名が既にテーブルに存在する場合は、IDを増やすべきではありません。この場合、または 'if ... then'を使用している特定のコードのための 'トリガー'のような何かをする必要がありますか?
ありがとうございます! :D あなたのおかげで、私はすでにsoooを多くのalredy学んだ、私は信じられない!^-^
解決策:私は実験と遺伝子のIDを照会しなければならないという問題があることを知りました。今の私は3つの機能(各テーブルに1つ)との結果に1つの結果値を追加する前に、小さなクエリを実行している:
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()
は確かに、それは何かを追加する前に、ID値を取得するためにクエリを実行する必要があります連想表(結果)に表示されます。その後、クエリがシーケンス(Seq)として返されるので、私はちょうど正しい型(データベースに記述されている)に変換しました。 これは将来誰かを助けることもできれば幸いです。
あなたのアイデアを共有してくれてありがとう! :)私はこのようにしてみようとしていますが、今は "更新リストでエンティティが変更されていません - これは不可能です!" >。< –
@IsabellaNavarroそれはとても素晴らしいとは思わない!あなたの質問を編集し、更新されたコードを含めることができますか? –