Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Id value not retrieved when multi-column PK

オープン
#568 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
fsharp, sql
領域
database

調査の方向性

SillyTable スキーマを使用した F# の例を SQL Server に対して再現し、その後、複数列の主キーに対して SubmitUpdates() が使用する挿入および生成キー取得の経路を追跡します。SubmitUpdates() の直後に row.Id がデータベースで生成された identity 値を含み、その値がテーブルから読み戻した値と一致すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

bug
Description

When a record is inserted in a table that has a multi-column primary key, the Identity value generated is not retrieved.

Repro steps
  1. Create a silly table:
create table SillyTable (TenantId int not null, Id int identity not null)
alter table SillyTable add constraint PK_SillyTable primary key (TenantId, Id)
  1. Insert a row and get the value for Id
let testError () =
        let ctx = sql.GetDataContext()
        let row = ctx.Dbo.SillyTable.Create()
        row.TenantId <- 1
        ctx.SubmitUpdates()
        let id = row.Id //always 0
        let readRow = ctx.Dbo.SillyTable |> Seq.last
        let readId = readRow.Id //return just inserted value (identity)
        (id, readId) //readId has the expected value
Expected behavior

After SubmitUpdates(), the row.Id value should be updated with the value generated by the DB.

Actual behavior

The Id column keeps its default value (0 in this case) after SubmitUpdates()

Known workarounds

None

Related information

Operating System: Windows 10 Pro
Visual Studio: 2017 15.8.1
FSharp.Core 4.5.2
SqlProvider 1.1.48
DB: SqlLocalDB v13

主要言語
F#
スター
627
フォーク
147
平均マージ
2時間 2分
マージ済み PR(30日)
1

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

fsprojects/SQLProvider のほかの issue

fsprojects/SQLProvider の issue をすべて見る

似ている issue

Databases の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。