これが最も理想的なソリューションではないことはわかっていますが、自動インクリメント フィールドを EF Code First オブジェクトの 1 つに追加する必要があります。この列 ID は、GUID である Id ではありません。
コードで自動インクリメントフィールドを定義する方法はありますか、それとも自分で列を作成し、DBで自動インクリメントが機能することを定義しますか?
これが最も理想的なソリューションではないことはわかっていますが、自動インクリメント フィールドを EF Code First オブジェクトの 1 つに追加する必要があります。この列 ID は、GUID である Id ではありません。
コードで自動インクリメントフィールドを定義する方法はありますか、それとも自分で列を作成し、DBで自動インクリメントが機能することを定義しますか?
そのプロパティに。で注釈を付けることができますDatabaseGenerated(DatabaseGeneratedOption.Identity)
。EFでは、テーブルごとに1つのID列のみが許可されます。
public class Foo
{
[Key]
public Guid Id { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Bar { get; set; }
}
EF Core に関するこの質問に出くわした場合は、次のようにモデル ビルダーで自動インクリメント列を作成できるようになりました。
builder.Entity<YourEntity>().Property(e => e.YourAutoIncrementProperty).UseNpgsqlIdentityAlwaysColumn();
参考:https ://www.npgsql.org/efcore/modeling/generated-properties.html