Я хотел бы иметь возможность искать информацию в моей базе данных и генерировать значение по умолчанию для одного из полей моей сущности на основе результатов.
Проблема в том, что я не знаю, как ввестиEF контекст в создании ValueGenerator.То, как я это делаю, теперь требует конструктора без параметров.
Вот что у меня есть.
В моем DbContext OnModelCreating:
entity.Property(e => e.SampleNumber)
.HasColumnName("SampleNumber")
.HasMaxLength(25)
.HasValueGenerator<SampleIDGenerator>();
Мой ValueGenerator:
public class SampleIDGenerator : Microsoft.EntityFrameworkCore.ValueGeneration.ValueGenerator
{
public override bool GeneratesTemporaryValues => false;
private readonly WellWaterEntities db;
public SampleIDGenerator(WellWaterEntities context)
{
db = context;
}
protected override object NextValue(EntityEntry entry)
{
string lastitem = db.Samples.OrderByDescending(x => x.SampleNumber)
.FirstOrDefault().SampleNumber;
if (lastitem != null)
{
int lastSequence;
if (int.TryParse(lastitem.Substring(5, 4), out lastSequence))
{
return lastitem.Substring(0, 5) + (lastSequence + 1).ToString("0000");
}
}
return DateTime.Now.Year.ToString() + "-" + "0001";
}
}