Эта сущность выглядит следующим образом:
Код: Выделить всё
public partial class Foo
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public decimal Id { get; set; }
public decimal? Prop1 { get; set; }
public decimal? Prop2 { get; set; }
public string? Prop3 { get; set; }
public string? Prop4 { get; set; }
public virtual ICollection NavProps
{ get;
set; } = new List();
}
Код: Выделить всё
modelBuilder.Entity(entity => {
entity.HasKey(e => e.Id).HasName("FOO_PK");
entity.ToTable("FOO");
entity.Property(e => e.Id)
.HasColumnType("NUMBER")
.HasColumnName("ID")
.HasDefaultValueSql("SELECT schema.FOO_SEQ.nextval FROM dual ");
entity.Property(e => e.Prop1).HasColumnType("NUMBER").HasColumnName("PROP1");
entity.Property(e => e.Prop2)
.HasMaxLength(64)
.IsUnicode(false)
.HasColumnName("PROP2");
entity.Property(e => e.Prop3).HasColumnType("NUMBER").HasColumnName("PROP3");
entity.Property(e => e.Prop4)
.HasMaxLength(50)
.IsUnicode(false)
.HasColumnName("PROP4");
});
modelBuilder.HasSequence("FOO_SEQ");
Код: Выделить всё
Foo foo = new()
{
Prop1 = 1 Prop2 = 1,
Prop3 = "test",
Prop4 = "test",
};
_dbContext.Foo.Add(foo);
await _dbContext.SaveChangesAsync().ConfigureAwait(true);
Кроме того, я не могу использовать функцию UseSequence в ModelBuilder, поскольку в моем проекте есть несколько классов DbContext, и я получаю конфликт перегрузки между Oracle и функция Postgres.
И я не хочу вставлять вручную с помощью ExecuteSql, потому что у меня будет много объектов, которые также содержат свойства навигации, и это было бы слишком хлопотно.
Подробнее здесь: https://stackoverflow.com/questions/798 ... nd-ef-core
Мобильная версия