質問: 私はEFで新しく、ETF6.0で最初のアプローチでコードを作成して、最初のステップを実行しようとしていますが、今は問題があります。 私には財産がある ``` [Key] public string FooId { get; set; } ``` これはモデルの主キーです。 しかし、私が > PM>更新データベース > > パッケージ管理コンソールのコマンドを使用して、データベースへの保留中の移行を更新します。次のエラーが表示されます。 > ID列 'FooId'は、データ型int、bigint、smallint、tinyint、または小数点以下の桁数(0の桁数)で、かつナルナブルでないことが制約されている必要があります。 > > 私のモデルでPKを変更した場合 ``` [Key] public int FooId { get; set; } ``` すべて正常に動作します。 しかし、私はPKがタイプストリングである必要があります。なぜなら、それは私のケースでは全く感覚を覚えるからです。私には欠点があることは分かっていますが、私にとっては必要です。 私はここで古いポストを見ましたエンティティのフレームワークの主キーとして文字列を作る方法! 。 しかし、それは私の問題を解決していないか、私はそれを理解していないようです。 SQLデータベース上でPKとして文字列を使用できないのは本当ですか? または、それを行う方法はありますか?
回答: これはID自動インクリメントを有効にしないでPKを作成する適切な方法です。 ``` [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public string FooId { get; set; } ```