私はLINQ to SQLオブジェクトをプログラムで作成して埋め込み、それをPKのuniqueidentifierカラムを持つSQLサーバデータベースに追加します。 LINQは自動的にすべての0のPKを割り当てます。 PKが重複しているため、挿入時にエラーが発生します。LinqがGUIDを追加しないようにして、SQL Serverで実行できるようにするにはどうすればよいですか?
Dim myNewRecord as IceCreamTrackerTable
myNewRecord.name=Bob
myNewRecord.favoriteIceCream=Vanilla
'myNewRecord.PK=00000000-0000-0000-0000-000000000000 (by default)'
myDataContext.IceCreamTrackerTables.insertOnSubmit(myNewRecord)
''second record added throws an error because it also has PK 00000 etc.
- 私はmyNewRecord.pk = Guid.newGuid() Guid is all 0's (zeros)?
- を使用してPKを割り当てることができることを知っている。しかし、私はだから私が本当にしたいことはGUIDを割り当てるべきSQLサーバー用ですそれはそれは同じGUID
再割り当て私はGUIDを自分で記入したいが、SQLサーバーにそれを残していないことをLINQを伝えるためにどのような方法がありますされていないことを確認するために、いくつかの方法を持っていると仮定?
ありがとうございました。私の心配はSQLサーバ上のGUIDであり、Visual StudioのGUIDは「話す」ものではありません。だから、それぞれが指導を割り当てる2つの独立したguidメーカーがあります。私はむしろ、ガイドを作成する責任を担うエンティティを1つだけ持っています。 Visual StudioのGUID作成メソッドは、すでにDBにあるguidを考慮していますか?これは私にはそう思わない。何か不足していますか? – bernie2436
いいえ、それは考慮に入れられませんが、そうする必要はありません。どのプラットフォームやソフトウェアに関係なく、誰がどのように高速に作成しても、重複したGUIDを取得することは理論的に不可能です。 –
@ akh2103 - 特定のマシンで生成されたすべてのGuidは、Visual Studioアプリケーションから呼び出されようと、SQLサーバー内の関数呼び出しからでも、サードパーティのアプリケーションからでも、同じ基礎となるメソッドを呼び出すよう最終的に解決します。私は何が評価されるかの詳細を知らないが、私はそれに現在のタイマーとMACアドレスの数字があると思われる。繰り返しますが、通常はユニークですが、100.00000%であることは保証されていません。しかし、それらがすべて同じソースから生成されている場合は、衝突することはほとんどありません。 –