opd*_*pdb 10 c# entity-framework one-to-many model-binding junction-table
我有以下型号
public class PageConfig : Base
{
// Properties Etc..
public ICollection<Image> ScrollerImages { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的方法是使用联结表{PageConfigID,ImageID}进行绑定.
在我的模型活页夹中我尝试了以下..
modelBuilder.Entity<PageConfig>()
.HasMany(x => x.ScrollerImages)
.WithMany()
.Map(x =>
{
x.ToTable("junc_PageConfigScrollerImages");
x.MapLeftKey("PageConfigID");
x.MapRightKey("ImageID");
});
Run Code Online (Sandbox Code Playgroud)
这导致图像的空集合.
如何将这些图像绑定到PageConfig模型?
编辑
大多数问题是由于用户错误.这发生在你身上......
检查数据库中的键约束是否已正确设置.
模型上的ICollection NEEDS是虚拟的.
如果要在这两个实体之间创建一对多关系,您的模型将如下所示:
public class PageConfig
{
public int Id {get;set;}
//navigation property
public ICollection<Image> ScrollerImages {get;set;}
}
public class Image
{
public int Id {get;set;}
//FK
public int? PageConfigId {get;set;}
//navigation property
public PageConfig PageConfig {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
而Fluent Api配置将是:
modelBuilder.Entity<Image>()
.HasOptional(i=>i.PageConfig)
.WithMany(pc=>pc.ScrollerImages)
.HasForeignKey(i=> i.PageConfigId);
Run Code Online (Sandbox Code Playgroud)
如果您的想法是创建单向一对多关系,那么删除Image实体上的FK和导航属性并以这种方式配置关系:
modelBuilder.Entity<PageConfig>()
.HasMany(pc => pc.ScrollerImages)
.WithOptional();
Run Code Online (Sandbox Code Playgroud)
有关此类关系的详细信息,请查看此链接
| 归档时间: |
|
| 查看次数: |
18660 次 |
| 最近记录: |