我有这个模型
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 到多个关联的正确方法?