2012-12-10 40 views
1

對不起,如果標題有點不清楚/模糊不清,但我不確定如何通過Fluent API獲得以下代碼綁定(如果甚至需要的話)實體框架 - 在同一個對象中使用相同的實體一次到多個流利的api

public class ChatUser 
{ 
    [Key] 
    public int ChatUserId { get; set; } 
    public string Name { get; set; } 

    public bool IsOnline { get; set; } 
    // other properties 

    // navigation properties 
    public ICollection<ChatMessage> Messages { get; set; } 
} 

public class ChatMessage 
{ 
    [Key] 
    public int ChatMessageId { get; set; } 
    public string Message { get; set; } 

    public int UserFromId { get; set; } 
    public int UserToId { get; set; } 

    public DateTime DateSent { get; set; } 

    // navigation properties 
    public ChatUser UserFrom { get; set; } 
    public ChatUser UserTo { get; set; } 
} 

我遇到的問題是讓兩個"ChatUser"對象綁定到UserFromIdUserToId - 他們都拿出了爲null

我需要能夠訪問來自用戶的「消息」列表,並且當我有Message對象時,我需要能夠訪問UserFromUserTo,以便我可以獲取屬性,例如Name

如果任何人都可以指出我正確的方向/任何我可以從中學習的鏈接,將不勝感激。

PS如果對於我想實現的目標有適當的術語可能有人告訴我 - 我不確定Google要解決我的問題。

回答

3

有兩個部分你的問題。

首先,爲了正確延遲加載的關係,需要將它們標記爲virtual。這適用於至少UserFrom,UserToMessages

其次,單個集合屬性無法從關係的兩側加載元素。但是,這是很容易與LINQ到OBJETS投影做的事:

public virtual ICollection<ChatMessage> MessagesFrom { get; set; } 
public virtual ICollection<ChatMessage> MessagesTo { get; set; } 

public virtual IEnumerable<ChatMessage> Messages 
{ 
    get { return MessagesFrom.Concat(MessagesTo); } 
} 

你需要用流利的API映射到MessagesFromUserFromMessagesToUserTo

這將圍繞.HasMany(x => MessagesFrom).WithRequired(x => x.UserFrom);你可以使用intellisense和文檔來找出確切的表單。

-3

下面是一個示例。

public class Class1 
{ 
    ChatUser user1 = new ChatUser(); 

    public Class1() 
    { 
     //List of Message for current User 
     List<ChatMessage> lstChatMessages = user1.Messages.ToList(); 

     //Take firstMessage in sequence 
     ChatMessage firstMessage = lstChatMessages.FirstOrDefault(); 

     //User from 
     ChatUser UserFrom = firstMessage.UserFrom; 

     //User To 
     ChatUser UserTo = firstMessage.UserTo; 

    } 
} 

開始閱讀一些書籍的.Net

+5

不要以爲你對我的微妙挖掘有任何需要......如果你閱讀這個問題,你會知道這是我遇到問題的CF問題,而不是一般的.net方面:) – mjbates7

相關問題