在EF中使用不可变,重复数据删除的EntityTypes

时间:2015-02-05 15:44:20

标签: entity-framework immutability

假设我有一个CRUD应用程序,允许用户管理他们的专辑集合:

class Collection
{
    int Id;
    string Name;
    List<Album> Albums //EF navigation property
}

class Album
{
    int Id;
    List<CdCase> Cases; //EF navigation property
    string Name;
    string Artist;
}

在此应用程序中,我允许用户添加,编辑和删除其收藏集。集合和相册使用Entity Framework存储在SQL Server数据库中。

天真实施,会有很多重复的专辑,所以我想在收集时节省时间:

  • 重复数据删除:如果相册已经存在(由名称/艺术家相等确定),该集合将使用该相册而不是创建新相册
  • 不可变性:如果编辑了相册,则编辑不会持久保存到服务器。相反,相册将从案例中删除,并创建/链接新的。
  • 垃圾收集:如果编辑/删除操作导致相册不再存在于任何收藏中,则会完全从数据库中删除。

有没有办法在DBContext级别实现此逻辑(即更改Set<Collection>行为),而不是在提交前手动清理相册?

编辑我使用的是代码优先的EF 6.1。

0 个答案:

没有答案