保存新的EF对象时,将再次创建现有的相关对象

时间:2018-01-23 20:56:42

标签: c# entity-framework

我先使用代码

我有一个包含categoryId的Group对象。 EF创建Category对象和关系。

当我创建我的组(来自Web请求)时,我从存储库中获取cateogry,搜索categoryid,然后将其分配给组Category对象。

保存我的群组时,会在服务器上创建一个新的类别,但其他所有内容都相同。

我知道他们不是来自同一个背景,因为这个小组是新的,并没有附加到上下文。

该类别创建为EntityWrapperWithoutRelationships。

如何分配类别对象,而不将其保存到EF,因为我只需要保存categoryId(正确保存)。

1 个答案:

答案 0 :(得分:0)

如果您的模型如下所示:

public class Group 
{
    public Guid Id { get; set; }
    public string Name { get; set; }

    public Guid CategoryId { get; set; }
    [ForeignKey("CategoryId ")]
    public virtual Category Category { get; set; }    
}

public class Category
{
    public Guid Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Group> Groups { get; set; }
}

如果您拥有包含有效类别ID的categoryId变量,则可以创建一个分配了类别的组实体:

_ctx.Groups.Add(new Group() { Name = "name", Id = Guid.NewGuid(), CategoryId = categoryId });
_ctx.SaveChanges();

您提到过,您正在使用存储库,因此我假设您的代码不会直接使用DbContext。