从数据库中删除项目,但不删除与此相关的其他项目

时间:2012-04-17 07:48:27

标签: c# entity-framework-4.1

我的文章课中有这个:

    public int GalleryID { get; set; }
    public virtual Gallery Gallery { get; set; }

这是我的画廊课程:

public class Gallery
{

    public int GalleryId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Photo> Photos { get; set; }
}

当我在存储库中删除库时:

    public virtual void Delete(int id)
    {
        T entity = dbset.Find(id);
        dbset.Remove(entity);
        dataContext.SaveChanges();
    }

我也删除了文章,但这不是我想要的。我想保留文章(只是将galleryId设置为0 a,将gallery设置为null。谢谢

1 个答案:

答案 0 :(得分:1)

在你的artical中使外键可以为空

public int? GalleryID { get; set; }

在删除图库时,您需要清除其文章集

public void DeleteGallery(int id)
{
    var entity = dataContext.Galleries
                .Include(e => e.Articles)  // include your child object collection
                .First(e => e.Id == id);

    dataContext.Galleries.Articles.Clear();  // this removes the reference to the parent
    dataContext.Galleries.Remove(entity);

    dataContext.SaveChanges();
}

EF 4.1 RC: Weird Cascade Delete