繁体   English   中英

实体框架-使用Linq和Lambda的AddOrUpdate

[英]Entity Framework - AddOrUpdate using Linq and Lambda

我使用以下代码定义了一个设置类:

    public Setting(string settingName, string settingValue, bool delay = false)
    {
        if (delay)
            System.Threading.Thread.Sleep(10);
        Id = Guid.NewGuid();
        CreatedAtUtc = DateTime.UtcNow;
        SettingName = settingName;
        SettingValue = settingValue;
    }

在设置控制器中,我定义了一个带有KeyValuePairs的字典,用于settingsName和settingValue。 使用foreach循环,我想遍历字典,为每个条目创建一个新设置。 我正在尝试以下代码,但是它将引发TargetInvocationException

        foreach (KeyValuePair<string, string> setting in settings)
        {
            var temp = new Setting(setting.Key, setting.Value);
            _appContext.Settings.AddOrUpdate(x => 
                new {x.Id}, temp);
        }

        _appContext.SaveChanges();

我究竟做错了什么?

原因可能是没有空的构造函数。 尝试为类Setting定义空的构造函数。

[Obsolete("Only for serialization", true])
public Setting()
{
}

您可以防止使用[Obsolete]属性在代码中使用该构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM