Как сделать ассоциацию 1 ко многим беглым API - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть эта модель

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();

Все отлично работает, но я ищу способ, как сделать ассоциацию 1 ко многим свободно бегущим 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: значение не может быть нулевым,Имя параметра: тело System.Linq.Expressions.Expression.Lambda (тело выражения, имя строки, bool tailCall, параметры IEnumerable) System.Linq.Expressions.Expression.Lambda (тело выражения, параметры ParameterExpression []) LinqToDB.Linq.Builder.ExpressionBuilder + <> c__DisplayClass94_0.b__1 (Выражение e) LinqToDB.Expressions.Extensions.Transform (выражение выражения, Func func) LinqToDB.Expressions.Extensions.Transform (источник ICollection, Func func) LinqToDB.ExpressallExExression (ExpressionBexception).func) LinqToDB.Expressions.Extensions.Transform (выражение expr, Func func)

Может быть, я неправильно пишу ассоциацию?Как лучше написать 1 ко многим ассоциациям в свободном синтаксисе?

...