приведение из списка <EntityObject>к EntityObject - PullRequest
0 голосов
/ 07 октября 2011

Мой код, как показано ниже.

public void CreateNewAuthor(List<Author> newAuthor)
{
    publishContext.AddToAuthors(newAuthor);
}

Я знаю, что это приведет к ошибке, так как AddToAuthors (Author newAuthor) принимает объект сущности в качестве параметра, когда я передаю список <>.Так как это должно быть обработано?Как привести List <> к объекту объекта до AddToAuthors ()?

Ответы [ 3 ]

2 голосов
/ 07 октября 2011

Вы принимаете нескольких авторов - но вы пытаетесь назвать что-то, что требует одного автора. Ожидаете ли вы несколько значений в вашем списке или только одно?

Звучит так, как будто вы могли бы просто зациклить:

public void CreateNewAuthor(List<Author> newAuthors)
{
    foreach (Author newAuthor in newAuthors)
    {
        publishContext.AddToAuthors(newAuthor);
    }
}

... или вполне возможно, что контекст уже обеспечивает способ добавления нескольких авторов одновременно. (Я не EF человек, поэтому я не знаю точно.)

Важно то, что вы понимаете возможности здесь - список не может содержать авторов, одного автора или нескольких авторов. Все ли они действительны в вашем коде? Как вы хотите справиться с каждой из этих ситуаций?

1 голос
/ 07 октября 2011

Случай 1. Вы знаете, что список содержит только один элемент:

  1. Измените подпись вашего метода следующим образом:

    public void CreateNewAuthor(Author newAuthor)
    

    (Очень неинтуитивно ссылаться на список элементов с именем, которого нет во множественном числе. Еще более не интуитивно понятно, что ваш метод принимает список (то есть, "несколько") Author объектов, но требует, чтобы список содержал только один элемент.)

  2. Затем вызовите ваш метод следующим образом:

    // using System.Linq;
    // List<Author> someListOfAuthors = new List<Author> { someAuthor };
    CreateNewAuthor( someListOfAuthors.Single() );
    

    или без использования LINQ:

    CreateNewAuthor( someListOfAuthors[0] );
    

Случай 2. Список может содержать любое количество пунктов:

  1. Переименуйте параметр с newAuthor на newAuthors, по той же причине, что указана выше.

  2. Измените тело метода следующим образом:

    foreach (Author author in newAuthors)
    {
        publishContext.AddToAuthors(author);
    }
    
1 голос
/ 07 октября 2011

Вы можете выполнить цикл по списку и добавить все объекты Author, которые этот список содержит:

foreach (Author author in newAuthor)
{
    publishContext.AddToAuthors(author);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...