私は、独自の自動生成intフィールドを持つように既存のテーブルを更新したいと思います。エンティティフレームワークでこれを行うにはどうしたらいいですか?固有の生成されたint(プライマリキーではない)を持つテーブルを更新する
長い説明:
クライアントは、他のデータベース/簿記のための参照番号として一意の識別子を持っているテーブル内のレコードごとにしたいと思います。通常、私は単純にプライマリキーを使用しますが、この場合、プライマリキーは機密情報(疑いの余地のない設計上の欠陥)です。
このテーブルを更新して、IDとは何の関係もない独自の自動生成intを作成したいと思います(もしそうなら大したことではないと思います)。既存のすべてのレコードに値が生成される可能性もあります。
データベース内のすべての主キー(および参照)を変更する方法もありますが、これはおそらくさらに難しいことです。私は代わりの解決策には開いています。
ありがとうございました。
プロパティに '[DatabaseGenerated(DatabaseGeneratedOption.Identity)]属性を追加してください。 –
ああ、私はこれをもう一度試したことを忘れていました。テーブルにはすでにプライマリキーがあるので、 "テーブル 'Client'に複数のIDカラムが指定されています。テーブルごとに1つのIDカラムしか使用できません。" – cspyr0
EFは一意の列をサポートしていません。コードはまず不可能ですが、データベース内の列を変更することができます。私は 'DataBaseGeneratedOption.Computed'のために行くだろう、これはEFに列自体を更新しないように指示し、データベースがそれを世話するようにする。しかし、EFを通して「ユニークな」コラムを作成することは、悲しいことではありませんが(まだ)不可能ですが、確かに禁止されていません。 –