同一实体上的两个外键

时间:2017-11-02 07:27:57

标签: c# entity-framework

我有类似的东西:

public class RelatedRequest{

  public RelatedRequest(int Id){
     RelatedRequestId = Id;
  }

   public int RequestId {get; set;}

   public int RelatedRequestId {get; set;}

   public string comment {get; set;}
}

另一类喜欢:

public class Request{

  public int Id{get; set;}  

  internal virtual ICollection<RelatedRequest> InternalRelatedRequests { get; } = new List<RelatedRequest>();

}

我有Request类的表,其中 Id 是表中的主键。 相关请求列的表格为: RequestID (外部KEY与来自请求的 Id 相同), RelatedRequestId (外部KEY与 ID相同来自Request),Comment(string)。

我正在使用Fluent API进行EF配置:

  public class RequestConfiguration : EntityTypeConfiguration<Request> {
      public RequestConfiguration() {
         HasKey(r => r.Id);
         HasMany(r => r.InternalRelatedRequests).WithOptional().HasForeignKey(rr 
                                                                => rr.RequestId);

      }
}

在Db中插入请求对象时,我需要来自请求的新Id,并希望使用来自请求的新Id来更新RelatedRequest对象的relatedRequestId。

我正在做这样的事情:

NewRequestEntity = new Request();
OldRequestEntity.InternalRelatedRequests.Add(new RelatedRequest(newRequest.Id));

DbContext.Set<Request>().Add(NewRequestEntity)
base.SaveChanges();

我总是将RelatedRequestId(newRequest.Id)作为零。因此EF根据外键的声音抛出Dbupdate异常。 我是EF的新手。 cna任何人请解释我在这里发生的事情。

0 个答案:

没有答案