3

Entity Framework 6 Code First を使用して、newid() を使用して SQL データベースのテーブルの主キーの既定値を設定したいと考えています。私はこれがコードを介してどのように行われるかを知っており、エンティティフレームワークで GUID に NewId() を設定する方法など、スタックオーバーフローに関するいくつかのアプローチも見つけました

BUT:私は、オブジェクトを介してではなく、データベースへのバルジとしてデータを挿入するバックアップ/復元メカニズムを持っています。したがって、ここでは Entity Framework は使用されません。これは、GUID が null の行が SQL データベースに挿入され、失敗することを意味します。

注釈を追加することが可能です

[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public Nullable<Guid> Entity_OID { get; set; }

そして、これは NEWSEQUENTIALID() をデフォルト値として正常に追加します。これは newid() と同様のことを行います (最近の GUID よりも高い新しい GUID を追加するため、入力に順序があるため、パフォーマンスが向上します)。しかし、これは EF なしで既に存在するデータベースであるため、変更をできるだけ少なくしたいと考えています。したがって、私は NEWSEQUENTIALID() にはまったく満足していません。まだ newid() だったらいいのにと思います。しかし、Entity Framework 6 Code First で newid() の注釈/マッピングが見つかりませんでした。また、設計上、データベースへのすべての変更はコードで行う必要があります。デフォルト値 newid() をコードで行に追加する方法を知っている人はいますか?

前もって感謝します!

4

2 に答える 2

0

プロパティをDatabaseGeneratedOption.Identityでマークすると、 EF は挿入操作のたびに DB から生成された値を取得し、それをプロパティに設定します。DB では、列のデフォルトの制約 newid() を作成するなど、すべてを実行できます。

于 2015-12-10T17:00:48.020 に答える