.net 保存到DB之前操作实体

k10s72fa  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(104)

我有点不太明白。我试图从正在创建的实体中操作字段,但它没有按预期工作。
简而言之,我试图改变一个字段,有电子邮件,通过拆分它们,然后添加一个;分隔符,以区分不同的电子邮件之前,保存到数据库。
下面是我的代码:

public async Task<IActionResult> OnPost(Models.Requests.Request newRequest)
{
    newRequest.RequestStatusID = (int)RequestStatusEnum.Requested;
    newRequest.CreatedBy = User.Identity.Name;
    newRequest.CreatedDate = DateTime.Now;
    newRequest.LastRequestDate = DateTime.Now;

    if (!String.IsNullOrEmpty(newRequest.CCRecipients))
    {
        string[] emailSeparators;
        string ccRecipients = "";
        emailSeparators = newRequest.CCRecipients.Split(new Char[] { ' ', ',', ';' });

        foreach (var email in emailSeparators)
        {
            //ccRecipients.Concat(email + "; ");
            
            // I have tried two different ways to concatenate the string
            ccRecipients = email.Trim() + "; ";
        }

        // This is where I'm trying to manipulate the string into the field
        // To my understanding this is possible but I could be wrong
        newRequest.CCRecipients = ccRecipients;
    }

    await _changeControlContext.AddAsync(newRequest);
    await _changeControlContext.SaveChangesAsync();

    // Other code that is being done

    return new RedirectToPageResult("RedirectsToAnotherPage");
}

字符串
可能有更好的方法来处理这个问题,但现在我想知道为什么这是行不通的,或者我在看什么。
从理论上讲,它应该起作用,但它不是。这里有什么问题吗?

EDIT:当我指的是不工作时,我指的是所述请求的CCRecipients字段的值没有保存在数据库中。

举例来说:RandomEmail@test.com; RandomEmail2@test.com。但在数据库中,没有存储任何内容。它是一个白色而不是null。很抱歉我没说清楚

yws3nbqq

yws3nbqq1#

替换现有代码行
第一个月

ccRecipients = ccRecipients + email.Trim() + "; ";
或者使用better approach(如@Masoud Andalibi所述)
ccRecipients += email.Trim() + "; ";

相关问题