如何通过流利的api使关联1变成多对

时间:2018-12-29 07:23:59

标签: c# .net asp.net-core orm linq2db

我有这个模特

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进行1对多关联的方法。

如果我删除属性

[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:值不能为null。参数名称:主体   System.Linq.Expressions.Expression.Lambda(表达式主体,字符串   名称,bool tailCall,IEnumerable参数)   System.Linq.Expressions.Expression.Lambda(表达式主体,   ParameterExpression []参数)   LinqToDB.Linq.Builder.ExpressionBuilder + <> c__DisplayClass94_0.b__1(Expression   e)LinqToDB.Expressions.Extensions.Transform(Expression expr,   Func func)   LinqToDB.Expressions.Extensions.Transform(ICollection源,   Func func)   LinqToDB.Expressions.Extensions.TransformX(MethodCallExpression e,   Func func)   LinqToDB.Expressions.Extensions.Transform(Expression expr,   Func func)

也许我写的联想是错误的?用流利的语法将1多次联想化的正确方法是什么?

0 个答案:

没有答案