1

タイトルが少し不明瞭/あいまいな場合は申し訳ありませんが、Fluent 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; }
}

私が抱えている問題は、2つのオブジェクトをと"ChatUser"にバインドすることです-両方ともとして表示されます。UserFromIdUserToIdnull

ユーザーから「メッセージ」のリストにアクセスできる必要があります。オブジェクトを取得したら、とMessageの両方にアクセスできる必要があるため、などのプロパティを取得できます。UserFromUserToName

誰かが私を正しい方向に向けることができれば/私がそこから学ぶことができるリンクをいただければ幸いです。

PS私が達成しようとしていることについて適切な用語があれば、誰かが私に知らせることができます-私は自分の問題を解決するためにGoogleに何をすべきかわからなかった!

4

2 に答える 2

3

あなたの質問には2つの部分があります。

まず、遅延読み込みを正しく行うためには、関係をとしてマークする必要がありますvirtual。これは、少なくとも、、およびに適用さUserFromUserToますMessages

次に、単一のコレクションプロパティが関係の両側から要素をロードすることはできません。しかし、これはLINQ-to-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); }
}

MessagesFromにマッピングするUserFromには、FluentAPIを使用する必要がありMessagesToますUserTo

.HasMany(x => MessagesFrom).WithRequired(x => x.UserFrom)それは;の線の周りの何かになります。インテリセンスとドキュメントを使用して、正確なフォームを見つけることができます。

于 2012-12-10T12:22:20.063 に答える
-4

これがサンプルです。

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ブックを読み始めます

于 2012-12-10T09:43:57.623 に答える