2016-03-16 84 views
0

我有一個評論類,其中包含評論作者/最後一個人的用戶對象來修改評論。在EF代碼中設置外鍵首先到現有的SQL Server數據庫

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類的關係,但我無法弄清楚如何做到這一點沒有把虛擬財產CommentUser類。但我不想要這樣做,因爲從User類的業務邏輯沒有任何意義,因爲它有一個Comment對象。

LastModifiedByUserId是指向User表的Comments表中的外鍵。

這裏是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線的實體,而不是一個整數。這是完全錯誤的方式來建立這種關係?當我從數據庫中提取一條評論時,我希望它爲最後修改註釋的人獲取用戶對象。

回答

1

我不認爲用戶只能修改一個評論。因爲這就是你的模型所表達的。組合HasRequired - WithRequiredDependent表示1:1的關係。它應該是1:n,如下所示:

this.HasRequired(c => c.LastModifiedByUser) 
     .WithMany() 
     .HasForeignKey(c => c.LastModifiedByUserId); 
+0

您可以將參數列表留空嗎? – Legion

+0

https://msdn.microsoft.com/en-us/library/gg696499%28v=vs.113%29.aspx –