0

コードアプローチと慣例によるマッピングを使用して、その場でsqllite dbテーブルを生成しています。

Id プロパティは、Guid.Comb アルゴリズムを使用してこのようにマップされます。

Id(x => x.Id, m => m.Generator(Generators.GuidComb));

私のdbテーブル内にIdプロパティがこのような形式で挿入されていることを除いて、テストは問題ないようX'0A16BBC77771594D9990A166014C54F6'です。

aaaef973-d8ce-4c92-95b4-3635bb2d42d5 なぜそのように保存され、次のような形式ではなく、このGUID表現をどのように解析できるのか疑問に思っていますX'0A16BBC77771594D9990A166014C54F6'

ありがとう

更新:以下の回答のおかげで、次のように試しました

Guid id = Guid.ParseExact("X'0A16BBC77771594D9990A166014C54F6'", "N");

今、私はこのエラーを取得しています

Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

Guid の文字列表現は必要ありません。次のようなデータベースをクエリするときに識別子として使用したい p = session.Get<Permission>(id);

4

2 に答える 2

2

これを使用して GUID を生成できます。

System.Guid.NewGuid().ToString("N").ToUpper()

次の形式で GUID を生成します。

D51A752B70E743B0BA903DE7A3FFDF91

追加できるX'

string finalFormatted = "X'" + System.Guid.NewGuid().ToString("N").ToUpper();

もちろん、それに応じて調整します(当たり前)。すでに GUID を持っている場合は、そのまま使用してください

string finalFormatted = "X'" + theGuidYouAlreadyHave.ToString("N").ToUpper();

アップデート

私は今、あなたが解析したいことに気づきました。ここに行きます:

string yourGuidString = "X'D51A752B70E743B0BA903DE7A3FFDF91";
Guid g = Guid.ParseExact(yourGuidString.Replace("X'",""), "N");
于 2013-02-15T19:32:26.213 に答える
1

なぜそのように保存されますか?

おそらく、文字列ではなく128ビットの数値フィールドとして保存しているだけです。GUID を挿入するための構文は、ダッシュを必要としない場合があります。

この GUID 表現を解析するにはどうすればよいですか

フォーマット指定子Guid.ParseExactとともに使用します。"N"

string x = "X'0A16BBC77771594D9990A166014C54F6'";
Guid g = Guid.ParseExact(x.Substring(2,32), "N");
于 2013-02-15T19:35:16.667 に答える