44

これが最も理想的なソリューションではないことはわかっていますが、自動インクリメント フィールドを EF Code First オブジェクトの 1 つに追加する必要があります。この列 ID は、GUID である Id ではありません。

コードで自動インクリメントフィールドを定義する方法はありますか、それとも自分で列を作成し、DBで自動インクリメントが機能することを定義しますか?

4

3 に答える 3

70

そのプロパティに。で注釈を付けることができますDatabaseGenerated(DatabaseGeneratedOption.Identity)。EFでは、テーブルごとに1つのID列のみが許可されます。

public class Foo
{
    [Key]
    public Guid Id { get; set; }

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Bar { get; set; }
}
于 2012-05-03T08:36:30.930 に答える
0

EF Core に関するこの質問に出くわした場合は、次のようにモデル ビルダーで自動インクリメント列を作成できるようになりました。

builder.Entity<YourEntity>().Property(e => e.YourAutoIncrementProperty).UseNpgsqlIdentityAlwaysColumn();

参考:https ://www.npgsql.org/efcore/modeling/generated-properties.html

于 2020-02-26T15:58:36.027 に答える