在插入之前更改主键的值

Change value of primary key before Inserting

我有两个 table componentpage 有多对多关系,我想在插入之前更改组件的 Id table 像这样 records+1 还有额外的字符串。我的问题是创建项目组件效果很好,但它不会在连接中创建记录 table componentPage.

public virtual async Task<T> Add(T obj, string createdBy= null, bool IsAutogeneratedId = true)
{
    obj.CreatedDate = DateTime.UtcNow;
    obj.CreatedBy = createdBy;

    // Just for creating page, component and componentsUserRoles
    if (!IsAutogeneratedId)
    {
        var lastId = entities.Count();
        var appId = createdBy.Split("=");
        var newId = $"{appId[0].Replace(": ", "")}_{lastId + 1}";
        obj.Id = newId;
    }
    
    _context.Attach(obj).State = EntityState.Added;

    // await entities.AddAsync(obj);
    await _context.SaveChangesAsync();

    return obj;
}

感谢您的帮助!

我忘记附上我要创建的新项目!

public virtual async Task<T> Add(T obj, string createdBy= null, bool IsAutogeneratedId = true)
        {
            obj.CreatedDate = DateTime.UtcNow;
            obj.CreatedBy = createdBy;

            if (_context.Entry(obj).State == EntityState.Detached)
            {
                entities.Attach(obj);
            }

            if (!IsAutogeneratedId)
            {
                var lastId = entities.Count();
                var appId = createdBy.Split("=");
                var newId = $"{appId[0].Replace(": ", "")}_{lastId + 1}";
                obj.Id = newId;
            }

            _context.Attach(obj).State = EntityState.Added;
            await _context.SaveChangesAsync();
            return obj;
        }