我有这个模特
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多次联想化的正确方法是什么?