【问题标题】:How can I remove or make null a navigation property before updating a record?如何在更新记录之前删除导航属性或将其设为 null?
【发布时间】:2014-02-04 21:56:29
【问题描述】:

这是我的对象模型的简单解释:

class Document
{
     public int ID;
     public List<DocumentActivity> Activities;
}

class DocumentActivity
{
     public int ID;
     [ForeignKey("User")]
     public int UserID;
     public User User;
}

class User
{
     public int ID;
     public List<DocumentActivity> Activities;
}

我正在使用桌面客户​​端构建 Web API。我在客户端上有一个 Document 对象,其中包含 1 个新 DocumentActivity,它引用了一个 User(然后又具有许多关联的 DocumentActivities。当我更新 Document 时,我只想用带有 UserID 引用的 DocumentActivity 更新 Document,但是我不想将引用用户的每个 DocumentActivity 标记为“未更改”,因为这很慢,所以我想在更新之前“清理” Document 对象以仅包含我想要的内容。

我想我可以以某种方式克隆对象并对其进行修改以满足我的需要,但这似乎需要做很多工作。我的一次尝试只是让用户为“null”并没有按预期工作。

想法?

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-web-api


    【解决方案1】:

    通过以下方式使外键可以为空:

    public int? UserId { get; set; }
    

    然后,您可以将 UserId 设为 null,而不是将 User 设为 null。

    【讨论】:

    • 我认为这不能解决我的问题。我想要做的是摆脱昂贵的 User 属性,所以我不需要在服务器上处理它。
    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多