2012-12-10 29 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

相关问题