2016-04-27 46 views
0

時,我有一些表格,以指定標準的電子郵件,並從他們應該被髮送地址的使用方法:使用這些類指定列加入

Email.Message 
------------- 
MessageId 
Name 
FromAddressId 

Email.Address 
------------- 
AddressId 

這些表進行建模代碼:

public class EmailAddress 
{ 
    public int AddressId { get; set; } 
} 

public class EmailMessage 
{ 
    public int MessageId { get; set; } 
    public string Name { get; set; } 
    public int FromAddressId { get; set; } 
    public virtual EmailAddress FromAddress { get; set; } 
} 

var message = Db.EmailMessages 
       .Where(m => m.Name == name) 
       .Include(m => m.FromAddress) 
       .SingleOrDefault(); 

我使用流利的API來指定的關係:

internal class EmailMessageMap : EntityTypeConfiguration<EmailMessage> 
{ 
    public EmailMessageMap() 
    { 
     ToTable("Message", "Email"); 
     HasKey(p => p.MessageId); 
     // What do I put here? 
    } 
} 

如何建立聯接到u我的EmailMessage類的FromAddressId?我已經試過了這些選項:

HasRequired(p => p.FromAddress).WithRequiredPrincipal(); // uses LEFT OUTER JOIN 
HasRequired(p => p.FromAddress).WithRequiredDependent(); // uses INNER JOIN 

這些會導致被創建使用SQL無論是LEFT OUTER JOININNER JOIN,但他們總是試圖加入Message.MessageIdAddress.AddressId,這是不正確。我如何使用正確的列(FromAddressId)?我需要有東西來取代// What do I put here?,否則我得到以下異常:

無效的列名稱FromAddress_AddressId「

編輯:我可以在FromAddress的頂部放置一個[ForeignKey("FromAddressId")]物業和它的作品:

[Extent1].[FromAddressId] = [Extent2].[AddressId] 

進展!現在,我如何在Fluent API中執行此操作?

回答

1

現在,我該如何在Fluent API中執行此操作?

HasRequired(p => p.FromAddress) 
.WithMany() 
.HasForeignKey(p => p.FromAddressId); 
+0

這工作!謝謝! – zimdanen