防止在实体框架中保存子对象

时间:2018-07-25 13:48:09

标签: c# entity-framework

使用实体框架并具有以下类:

public class TestClass{

    [Key]
    public int id {get; set;}
    public int foreignId {get; set;}

    [ForeignKey("foreignId")
    public MyObject myObject {get; set;}
}

使用此类,我想保存“ TestClass”,但是实体框架首先尝试保存/创建不需要保存的“ myObject”,因为它只是一个引用。 在某些论坛(enter link description here中,我读到必须在保存之前将myObject显式设置为“ null”,但是在我看来,这很烦人。

所以我想问是否可以添加到myObject的注释或类似“ IgnoreOnSave”的东西?

[ForeignKey("foreignId", "ignoreOnSave")]
public MyObject myObject {get; set;}

1 个答案:

答案 0 :(得分:0)

更新

[NotMapped]为我做到了:

[NotMapped]
[ForeignKey("foreignId")]
public MyObject myObject {get; set;}

使用此属性,我可以使用外部子对象加载该对象,但是在保存子对象时,“ myObject”将被忽略。我只需要在代码中确保将“ myObject”的ID复制到主对象的外键属性。

另外(我正在创建一个Web-Api-Solution)我在外键属性中添加了[JsonIgnore],以使我拥有干净的界面。

更新

使用[NotMapped]导致linq表达式“ .include”不再可用于相应的属性。