Ale*_*man 9 c# entity-framework sql-server-ce
我们首先在Entity框架代码中工作
我们有一个课堂视频
class Video{
List<ImageInfo> Images{
get; set;
}
}
Run Code Online (Sandbox Code Playgroud)
我们的图像infoclass包含图像的路径和一些其他信息
class ImageInfo{
String path;
...
}
Run Code Online (Sandbox Code Playgroud)
我们希望在删除视频时让EF删除imageinfos
所以我们改变了模型构建器,如下所示:
modelBuilder
.Entity<Video>()
.HasMany(v => v.Images)
.WithRequired()
.WillCascadeOnDelete(true);
Run Code Online (Sandbox Code Playgroud)
我们不想在imageinfo类中添加回到视频的链接.
是否有可能在没有双向外键的情况下获得级联删除功能?
编辑
保存视频时,imageInfo的video_id不会填入数据库.
我们怎么解决这个问题?
我不知道它是否相关,但是当我们同时添加带有图像的新视频时,我们会收到此错误:
Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values.
Run Code Online (Sandbox Code Playgroud)
Axe*_*ger 18
在WithRequired介绍了2单向关系.所以你应该做以下事情.
modelBuilder
.Entity<Video>()
.HasMany(v => v.Imgages)
.WithOptional()
.WillCascadeOnDelete(true);
Run Code Online (Sandbox Code Playgroud)
......并假设你想要这种关系反过来......
public class Video { }
public class ImageInfo {
public virtual Video { get; set; }
}
modelBuilder
.Entity<ImageInfo>()
.HasRequired(v => v.Video)
.WithMany()
.WillCascadeOnDelete(true);
Run Code Online (Sandbox Code Playgroud)
PS:我认为List<ImageInfo>应该是virtual,所以这就是我如何定义它...
public class Video {
public Video() { this.Images = new List<ImageInfo>(); }
public virtual ICollection<ImageInfo> Images { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6456 次 |
| 最近记录: |