EF Core-通过WebAPI插入记录时处理导航

问题描述

我的Web应用程序中有以下情况。

我开始创建一个新的表记录。因此,我通过WebAPI访问服务器端初始化逻辑。服务器上的初始化完成后,我将检索我的实体的一个实例,继续使用该实例,直到将其保存。然后,我向WebAPI发出另一个请求以调用数据插入。当我在Add()记录中执行我的DbContext时,我可以看到所有导航也都添加到了更改跟踪器中。当调用DbContext.Add()时,EF就是这样做的。

现在我有一个问题,我无法识别导航属性的值是使用表单输入手动设置的,还是已经由我的自定义初始化逻辑设置的。对于手动资料,我记录了所有修改后的字段,并在add()上忽略了它们,因为在这一点上,它只能是对现有(已插入)表记录的导航。因此,在添加新记录之前,我会选择每个记录。因此,ChangeTracker会认识到在Add()上存在导航,并且由于其正确的“未更改”实体状态,因此不会添加导航。但这不会影响所有在服务器端事先设置的导航属性。我该怎么处理。

WebAPI-控制器方法

TEntity CreateEmpty<TEntity>()

TEntity Insert(TEntity newrecord)

服务器端-型号

public class Blog : TableRecord
{

    public User Admin {get;set;}

    Blog CreateEmpty()
    {
        Init();
    }

    protected override Init()
    {
        base.Init();
        Admin = CurrentUser();
    }
}

WebApp

在以表格形式编辑值之后,首先从API调用CreateNew(),它将输入提交到Insert()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...