我有一个评论类,其中包含评论作者/最后一个修改评论的人的用户对象。
public class Comment
{
public int CommentId { get; set; }
public int SignOffId { get; set; }
public string CommentText { get; set; }
public int LastModifiedByUserId { get; set; }
public DateTime LastModifiedOnDate { get; set; }
public virtual User LastModifiedByUser { get; set; }
}
我正在尝试在CommentMap
类中设置关系,但如果不在Comment
类中添加虚拟User
属性,我无法弄清楚如何执行此操作。但我不希望这样,因为User
类的业务逻辑没有Comment
对象。
LastModifiedByUserId
是指向Comments
表的User
表中的外键。
这是CommentMap
ctor。
public CommentMap() {
// Primary Key
this.HasKey(t => t.CommentId);
// Properties
this.Property(t => t.CommentText)
.IsRequired()
.IsMaxLength();
this.Property(t => t.LastModifiedByUserId)
.IsRequired();
this.Property(t => t.LastModifiedOnDate)
.IsRequired();
// Table & Column Mappings
this.ToTable("Comments");
this.Property(t => t.CommentId).HasColumnName("CommentId");
this.Property(t => t.SignOffId).HasColumnName("SignOffId");
this.Property(t => t.CommentText).HasColumnName("CommentText");
this.Property(t => t.LastModifiedByUserId).HasColumnName("LastModifiedByUserId");
this.Property(t => t.LastModifiedOnDate).HasColumnName("LastModifiedOnDate");
// Relationships
this.HasRequired(c => c.LastModifiedByUser)
.WithRequiredDependent(u => u.UserId) //This doesn't work
.HasForeignKey(c => c.LastModifiedByUserId);
}
它想要WithRequiredDependent
行中的实体,而不是整数。这完全是建立这种关系的错误方式吗?当我从数据库中提取注释时,我希望它也为上次修改注释的人抓取User对象。
答案 0 :(得分:1)
我不认为用户只能修改一条评论。因为这就是你的模特所表达的。组合HasRequired - WithRequiredDependent
表达1:1的关系。它应该是1:n,如下所示:
this.HasRequired(c => c.LastModifiedByUser)
.WithMany()
.HasForeignKey(c => c.LastModifiedByUserId);