【发布时间】:2016-01-11 13:17:37
【问题描述】:
我想创建具有两个属性的表,这些属性与同一个表具有一对一的关系。我的模型:
public class ImageFile : BaseEntity
{
[Key]
Guid Guid { get; set; }
public string Name { get; set; }
public string Extension { get; set; }
public long Size { get; set; }
public byte[] FileContent { get; set; }
public ProjectImage ProjectImage { get; set; }
}
public class ProjectImage : BaseEntity
{
public string Description { get; set }
public ImageFile Thumbnail { get; set; }
public ImageFile FullSizeImage { get; set; }
}
这是我的上下文的一部分:
modelBuilder.Entity<ProjectImage>()
.HasRequired(f => f.FullSizeImage)
.WithOptional(i => i.ProjectImage);
modelBuilder.Entity<ProjectImage>()
.HasRequired(f => f.Thumbnail)
.WithOptional(i => i.ProjectImage);
它以一对多的方式创建数据库。为什么?
编辑 V2:
public class ImageFile : BaseEntity
{
[Key]
Guid Guid { get; set; }
public string Name { get; set; }
public string Extension { get; set; }
public long Size { get; set; }
public byte[] FileContent { get; set; }
public Guid? ProjectImageGuid { get; set; }
[ForeignKey("ProjectImageGuid")]
public ProjectImage ProjectImage { get; set; }
}
public class ProjectImage : BaseEntity
{
public string Description { get; set }
public Guid? ThumbnailGuid { get; set; }
public Guid? FullSizeImageGuid { get; set; }
[ForeignKey("ThumbnailGuid")]
public ImageFile Thumbnail { get; set; }
[ForeignKey("FullSizeImageGuid")]
public ImageFile FullSizeImage { get; set; }
}
这是我的上下文的一部分:
modelBuilder.Entity<ProjectImage>()
.HasRequired(f => f.FullSizeImage)
.WithOptional(i => i.ProjectImage);
modelBuilder.Entity<ProjectImage>()
.HasRequired(f => f.Thumbnail)
.WithOptional(i => i.ProjectImage);
我有错误:
ProjectImage_Thumbnail_Source: : 多重性在角色中无效 关系中的“ProjectImage_Thumbnail_Source” 'ProjectImage_Thumbnail'。因为从属角色属性是 不是关键属性,多重性的上限 从属角色必须是“*”。
【问题讨论】:
-
您不能同时让表 A 具有与表 B 相关的主键和外键。将 ImageFile 中的 Guid 属性添加到 ProjectImage 并链接它们。
-
我编辑了我的问题,现在我有错误
标签: c# sql-server asp.net-mvc entity-framework