0

私はこの汎用リポジトリを見つけましたが、それを使用する方法を見つけました:

    public T FindSingle(Expression<Func<T, bool>> predicate = null, params Expression<Func<T, object>>[] includes)
    {
        var set = FindIncluding(includes);

        return (predicate == null) ? set.FirstOrDefault() : set.FirstOrDefault(predicate);
    }

このようないくつかの関連エンティティを含めるためにこれを呼び出すにはどうすればよいですか?:

        Message messageParentDomain = _messageRepository.FindSingle(m => m.Id == messageDto.MessageParent_Id, includes: i => i.MemberFrom, i => i.MemberTo);  

メッセージクラス:

public class Message
{
    // Primary properties
    public int Id { get; set; }
    public string NameFrom { get; set; }
    public string EmailFrom { get; set; }
    public string TelephoneFrom { get; set; }
    public string Title { get; set; }
    public string MessageText { get; set; }
    public bool? Approved { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime? DateRead { get; set; }

    // Navigation properties
    public Member MemberFrom { get; set; }
    public Member MemberTo { get; set; }
    public MessageType MessageType { get; set; }
    public Message MessageParent { get; set; }

    public Ad Ad { get; set; }
    public Ask Ask { get; set; }
}

ありがとう。

4

1 に答える 1

0

コンパイルするメソッドのバージョンは次のとおりです。

public T FindSingle<T>(Expression<Func<T, bool>> predicate = null, params Expression<Func<T, object>>[] includes)
{
    var set = FindIncluding(includes);

    return (predicate == null) ? set.FirstOrDefault() : set.FirstOrDefault(predicate);
}

私は、Tが呼び出されてMessage(Tを渡すことはできません)、とを与えるFindSingle<Message>と仮定していますExpression<Func<Message, object>>。Tを実際に使用しているオブジェクトに置き換える必要があります。このコードを試してください...

Message messageParentDomain = 
    _messageRepository.FindSingle<Message>(
        m => m.Id == messageDto.MessageParent_Id, 
        includes: new Expression<Func<Message, object>>[] {
            i => i.MemberFrom,
            i => i.MemberTo
        }); 
于 2013-03-14T15:55:06.313 に答える