通过在图像和项目实体上定义 ICollection,我使用 EF CTP4 中的默认约定创建了多对多关系。
映射表创建如下:
create table [dbo].[Images_Project] (
[Images_Id] [uniqueidentifier] not null,
[Project_Id] [uniqueidentifier] not null,
primary key ([Images_Id]));
不幸的是,当我删除一个项目时,它不会级联删除到图像映射表。
我希望 EF 在 Imanges_Id 和 Project_Id 属性上生成一个密钥,但事实并非如此。删除项目时如何配置 EF 以删除映像映射?(只有图像映射记录,不是图像记录)
谢谢
[更新]
尽管级联显然是不可能的,但知道为什么以下测试通过了:
[Test]
public void Can_delete_project_with_images()
{
var project = new Project { Title = "Test project" };
var image = new Image { Title = "Some image" };
project.AddImage(image);
context.Set<Project>().Add(project);
context.SaveChanges();
object id = project.Id;
object imageId = image.Id;
var fromDb = context.Projects.Find(id);
fromDb.ShouldNotBeNull();
context.Set<Project>().Remove(fromDb);
context.SaveChanges();
var fromDb2 = context.Images.Find(imageId);
fromDb2.ShouldNotBeNull();
fromDb2.Title.ShouldEqual("Some image");
}