gpt4 book ai didi

c# - ASP.Net MVC TryUpdateModel() 等效于在 Windows 应用程序中使用

转载 作者:行者123 更新时间:2023-11-30 18:45:21 25 4
gpt4 key购买 nike

TryUpdateModel 是 System.Web.Mvc 中的方法之一,但我需要在没有此库的 Windows 应用程序中使用它。EF 中的任何类似方法或其他建议,以便我可以更新实体而无需将字段与目标模型逐一匹配?

最佳答案

我尝试了很多解决方案,但最后我通过反射编写了自己的方法,它非常适合我,如下所示:

        public void TryUpdateModel<T>(T existingModel, T newModel)
{
PropertyInfo[] properties = existingModel.GetType()
.GetProperties()
.Where(pi => !(pi.PropertyType.IsSubclassOf(typeof(T))))
.ToArray();
foreach (var item in properties)
{
var propName = item.Name;
if (item.PropertyType.IsSealed && item.PropertyType.IsSerializable && item.Name != existingModel.GetType().Name + "Id")
{
var newValue = db.Entry(newModel).Property(propName).CurrentValue;
db.Entry(existingModel).Property(propName).CurrentValue = newValue;
}
}
}

它有 2 个模型(因为它们是通用类,但应该相同),其中第一个是从数据库中获取的模型,第二个是从 UI 表单提交的模型。它将除导航属性和主键之外的属性值从 newModel 更新为 existingModel,以便 Entity Framework 意识到值已更改且必须更新。

关于c# - ASP.Net MVC TryUpdateModel() 等效于在 Windows 应用程序中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59246650/

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