我的代码如下。
public void CreateNewAuthor(List<Author> newAuthor)
{
publishContext.AddToAuthors(newAuthor);
}我知道这会导致错误,因为当我传递List<>时,AddToAuthors(Author newAuthor)接受entity对象作为参数。那么,这应该如何处理呢?如何在AddToAuthors()之前将List<>转换为entity对象?
发布于 2011-10-07 17:52:05
您正在接受多个作者--但您试图调用需要单个作者的东西。您的列表中是否需要多个值,还是只有一个值?
听起来你可能只想循环:
public void CreateNewAuthor(List<Author> newAuthors)
{
foreach (Author newAuthor in newAuthors)
{
publishContext.AddToAuthors(newAuthor);
}
}..。或者,完全有可能上下文已经提供了一种同时添加多个作者的方法。(我不是EF的人,所以我不确定。)
重要的是,您要了解此处的可能性-列表可以不包含作者,可以包含一个作者,也可以包含多个作者。这些在你的代码中都是有效的吗?您希望如何处理这些情况?
发布于 2011-10-07 17:54:19
您可以遍历列表并添加此列表包含的所有Author对象:
foreach (Author author in newAuthor)
{
publishContext.AddToAuthors(author);
}发布于 2011-10-07 17:55:50
案例1.您知道该列表只包含一项:
公共空作者(CreateNewAuthor newAuthor)
(引用名称不是复数形式的项目列表是非常不直观的。更不直观的是,您的方法接受一个列表(即。“几个”) Author对象,但要求列表只包含一项。)
//使用System.Linq;//列表someListOfAuthors =新建列表{ someAuthor };CreateNewAuthor( someListOfAuthors.Single() );
或者,不使用LINQ:
CreateNewAuthor( someListOfAuthors );
案例2.列表可以包含任意数量的项:
newAuthor重命名为newAuthors,原因与前面提到的将方法主体重命名为以下内容的原因相同:foreach (newAuthors作者){publishContext.AddToAuthors(作者);}
https://stackoverflow.com/questions/7685589
复制相似问题