Cannot implicitly convert type
'System.Collections.Generic.List<xxxx.Models.ApplicationUser>' to
'System.Collections.Generic.IEnumerable<xxxx.User>'. An explicit
conversion exists (are you missing a cast?)
I can't find anything related to this issue. I created an API-folder inside Controllers folder, added UserController in API folder and then wrote the following:
(get the error at return _context.Users.ToList();)
namespace xxxx.Controllers.API {
public class UserController : ApiController
{
private ApplicationDbContext _context;
public UserController() {
_context = new ApplicationDbContext();
}
//GET /api/users
public IEnumerable<User> GetUsers()
{
return _context.Users.ToList(); //<-- where I get the error message
}
This is my model for user:
public partial class User
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public User()
{
this.Reviews = new HashSet<Review>();
}
public System.Guid Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Review> Reviews { get; set; }
}
Any idea how to solve this?
Your method returns IEnumerable<User>, but _context.Users must get you type ApplicationUser. You will have to convert these to type User, or have your method return IEnumerable<ApplicationUser>.
To do the conversion, I like to use Transformers. I usually implement an interface
public interface ITransformer<in TSource, out TOutput>
{
TOutput Transform(TSource source);
}
An example transformer would be
public class AppUserToUserTransformer : ITransformer<ApplicationUser, User>
{
public User Transform(ApplicationUser source)
{
return new User
{
Username = source.Username;
Email = source.Email;
//continue with the rest of the available properties
};
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With