Лучший способ обновить свойство JSON с ядром EF

Как сказал христианин, это может быть выполнено через ParameterSetNames. Взгляните на этот пример:

function Get-MySPWeb {
    [CmdletBinding(DefaultParameterSetName="set1")]
    param (
        [parameter(ParameterSetName="set1")] $RelativeUrl,
        [parameter(ParameterSetName="set2")] $WebUrl,
        [parameter(ParameterSetName="set2", Mandatory=$true)] $DisplayName
    )
    Write-Host ("Parameter set in action: " + $PSCmdlet.ParameterSetName)
    Write-Host ("RelativeUrl: " + $RelativeUrl)
    Write-Host ("WebUrl: " + $WebUrl)
    Write-Host ("DisplayName: " + $DisplayName)

}

Если вы запустите его с помощью -RelativeUrl Foo, он будет привязан к «set1». Если вы вызываете эту функцию без параметров, она также привязывается к «set1».

(Примечание - , когда в PowerShell v3 (с предварительным просмотром Win8) нет параметров, он будет привязан к «set1», однако привязка ошибок в PowerShell v2 будет связана с ошибкой, если вы не добавите [CmdletBinding(DefaultParameterSetName="set1")] в [@ g0])

Если вы попытаетесь запустить его со значением параметра из обоих наборов, вы получите сообщение об ошибке.

Если вы запустите его с помощью -WebUrl Bar, он предложит вам значение параметра для DisplayName, потому что это обязательный параметр.

1
задан Stanislav 17 January 2019 в 15:57
поделиться

1 ответ

Это невозможно с EF Core 2.2. Существует предложение для такой функции, но я бы не стал задерживать дыхание.

Если JSON, который вы храните, мал и / или обновления редки, я бы выбрал первый подход, поскольку изменения хранятся в контексте, и вам не нужна транзакция, и она лучше согласуется с общим дизайном EF , Кроме того, это обеспечивает безопасность времени компиляции и упрощает рефакторинг / изменение. Проверьте этот поток - Как сохранить JSON в поле сущности с EF Core?

Если вам нужна производительность, чем определенно команда JSON_MODIFY sql.

0
ответ дан Angel Yordanov 17 January 2019 в 15:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: