1

我有这个模型

public class Topic
{
    public int Id { get; set; }

    public string Title { get; set; }

    public string Text { get; set; }

    [Association(ThisKey="Id", OtherKey="TopicId")]  // Need to remove and go to fluent syntax definition
    public virtual ICollection<Message> Messages { get; set; }
}

public class Message
{
    public int Id { get; set; }

    public int TopicId { get; set; }

    [Association(ThisKey="TopicId", OtherKey="Id")]
    public virtual Topic Topic { get; set; }

    public string Text { get; set; }
}

而这个查询

db.Topics.Where(x => x.Id == 6).Select(x =>
       new
       {
          Topic = x,
          MessagesIds = x.Messages.Select(t => t.Id).ToList()
       }).FirstOrDefault();

一切正常,但我正在寻找如何通过流利的 api 进行一对多的关联。

如果我删除属性

[Association(ThisKey="Id", OtherKey="TopicId")]  // This removed
public virtual ICollection<Message> Messages { get; set; }

并这样做

mp.Entity<Topic>().Association(x => x.Messages, (x, y) => x.Id == y.TopicId);

查询因此失败

ArgumentNullException:值不能为空。参数名称:body System.Linq.Expressions.Expression.Lambda(Expression body, string name, bool tailCall, IEnumerable parameters) System.Linq.Expressions.Expression.Lambda(Expression body, ParameterExpression[] parameters) LinqToDB.Linq.Builder。 ExpressionBuilder+<>c__DisplayClass94_0.b__1(Expression e) LinqToDB.Expressions.Extensions.Transform(Expression expr, Func func) LinqToDB.Expressions.Extensions.Transform(ICollection source, Func func) LinqToDB.Expressions.Extensions.TransformX(MethodCallExpression e, Func func) LinqToDB.Expressions.Extensions.Transform(Expression expr, Func func)

也许我写错了联想?如何以流利的语法编写 1 到多个关联的正确方法?

4

0 回答 0