gpt4 book ai didi

asp.net-core - 使用 PropertyBuilder.HasValueGenerator 并连接到数据库上下文

转载 作者:行者123 更新时间:2023-12-05 05:11:42 24 4
gpt4 key购买 nike

我希望能够在我的数据库中查找信息并根据结果为我的实体的字段之一生成默认值。

问题是,我不知道如何将 EF 上下文注入(inject)到 ValueGenerator 的创建中。我现在这样做的方式需要一个无参数的构造函数。

这是我目前所拥有的。

在我的 DbContext OnModelCreating 中:

            entity.Property(e => e.SampleNumber)
.HasColumnName("SampleNumber")
.HasMaxLength(25)
.HasValueGenerator<SampleIDGenerator>();

我的值(value)生成器:

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";
}
}

最佳答案

NextValue() 参数 EntityEntry entry 填充有 DbContext entry.Context

    protected override object NextValue(EntityEntry entry)
{
WellWaterEntities db = (WellWaterEntities) entry.Context;

...
}

关于asp.net-core - 使用 PropertyBuilder.HasValueGenerator 并连接到数据库上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com