Entity framework 在EF中使用不可变、重复数据消除的EntityTypes

Entity framework 在EF中使用不可变、重复数据消除的EntityTypes,entity-framework,immutability,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

假设我有一个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;
}
类集合
{
int-Id;
字符串名;
列出相册//EF导航属性
}
班级相册
{
int-Id;
列出案例;//EF导航属性
字符串名;
弦乐艺术家;
}
在这个应用程序中,我允许用户向他们的收藏中添加、编辑和删除相册。集合和相册使用实体框架存储在SQL Server数据库中

简单地说,将会有很多重复的相册,因此我想在收集时做以下几点:

  • 重复数据消除:如果相册已存在(由姓名/艺术家相等性决定),则收藏将使用该相册,而不是创建新相册
  • 不变性:如果编辑了相册,则编辑不会持久化到服务器。相反,相册将从案例中删除,并创建/链接新相册
  • 垃圾收集:如果编辑/删除操作导致相册不再存在于任何收集中,则会将其从数据库中完全删除
有没有办法在DBContext级别实现此逻辑(即更改
行为),而不是在提交之前手动清理相册


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

我认为这属于附加到实体的创建/更新/删除操作的存储过程。取决于EF版本和代码优先/db优先。