我有两个一对一或零关系的实体:Version
和ChangeLog
。第二个使用changelog存储文件(例如'ReadMe.html')。
public class Version
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public ChangeLog ChangeLog { get; set; }
}
public class ChangeLog
{
[Key]
public int Id { get; set; }
public string FileName { get; set; }
public byte[] File { get; set; }
public int VersionId { get; set; }
public Version Version { get; set; }
}
一对一关系代码:
modelBuilder.Entity<Version>()
.HasOne(v => v.ChangeLog)
.WithOne(c => c.Version)
.HasForeignKey<ChangeLog>(c => c.VersionId);
如何检查相关实体是否存在。因此,对于一对多的关系,我可以做这样的事情Product.Versions.Any()
。
一对一怎么样?我应该使用上下文context.ChangeLogs.Any(c => c.VersionId == versionId)
吗?
答案 0 :(得分:0)
您可以通过执行以下操作来执行此操作:
当您查询“Grave: Exception while preparing the app : Invalid resource : moduleJNDI__pm
java.lang.RuntimeException: Invalid resource : moduleJNDI__pm
”实体时,请确保您还请求“Version
”实体,如下所示。
ChangeLog
这可确保EF始终尝试提取var versionWithChangeLog = context.Versions.Include(v => v.ChangeLog)
.FirstOrDefault(v => v.Id == versionid);
实体的相关ChangeLog
实体。
现在对相关的Version
实体进行空检查。
ChangeLog
基本上如果有相关记录,EF会一直拉它,因为我们要求它。如果它为null,则表示数据库没有记录。
哦,如果你只想检查相关的更改日志实体是否存在,而不是检索它,你可以使用这些:
if (versionWithChangeLog && versionWithChangeLog.ChangeLog != null)
{
// we got a version entity with a changelog.
}