ここで明らかな答えが欠けていると確信していますが、手を使うことができます。SubSonic は初めてで、バージョン 3 を使用しています。クエリと挿入ができるようになりましたが、挿入後に ID 列の値を取得する方法に行き詰まっています。Linq テンプレートについて言及した別の投稿を見ました。私はそれらを使用していません (少なくとも私はそうではないと思います...?)
ティア
... アップデート ...
そのため、SubSonic コードがどのように機能するかを監視しながらコードをデバッグしており、inidentity 列が無視されている場所を見つけました。データベースの ID 列のデータ型として int を使用し、それらを ID として設定します。int は c# では null 非許容のデータ型であるため、 (key==null) を実行してキー列に値があるかどうかをチェックする Add メソッド (public void Add(IDataProvider provider)) の論理テストは、問題。ID フィールドの新しい値を取得するコードは「真のパス」にあります。これは、int を null にすることはできず、ID 列のデータ型として int を使用しているため、このテストには合格しません。オブジェクトの ID フィールドに、入力していない 0 が含まれています。オブジェクトの初期化中に設定されていると思います。私はここで基地外ですか?データベースのデータ型を変更するのが答えですか?
別の質問 (もっと好奇心)。生成されたクラスの一部のプロパティが ? で宣言されていることに気付きました。データ型の後。私はこの宣言構造に慣れていません...何が得られますか? int (非キー フィールド) として宣言されているものと、int として宣言されているものがありますか? (キー フィールド)。これは、初期化時の処理方法と関係がありますか?
どんな助けでも大歓迎です!
- バンプ -