récupérer le nom de l'étudient rest web service
Bonjour,
j'ai un projet de web Service avec ASP.net à terminer (il a été déjà crée et je suis en cours de terminer le travail),mon problème est que je n'arrive plus a extraire le nom de l'étudiant tapé en valeur voici le fichier service.cs que j'ai déja trouvé défini:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
public abstract class Service<TEntity> : IService<TEntity> where TEntity : class, IObjectState
****{
********#region Private Fields
********private readonly IRepositoryAsync<TEntity> _repository;
********#endregion Private Fields
*
********#region Constructor
********protected Service(IRepositoryAsync<TEntity> repository) { _repository = repository; }
********#endregion Constructor
*
********public virtual TEntity Find(params object[] keyValues) { return _repository.Find(keyValues); }
*
********public virtual IQueryable<TEntity> SelectQuery(string query, params object[] parameters) { return _repository.SelectQuery(query, parameters).AsQueryable(); }
*
********public virtual void Insert(TEntity entity) { _repository.Insert(entity); }
*
********public virtual void InsertRange(IEnumerable<TEntity> entities) { _repository.InsertRange(entities); }
*
********public virtual void InsertOrUpdateGraph(TEntity entity) { _repository.InsertOrUpdateGraph(entity); }
*
********public virtual void InsertGraphRange(IEnumerable<TEntity> entities) { _repository.InsertGraphRange(entities); }
*
********public virtual void Update(TEntity entity) { _repository.Update(entity); }
*
********public virtual void Delete(object id) { _repository.Delete(id); }
*
********public virtual void Delete(TEntity entity) { _repository.Delete(entity); }
*
********public IQueryFluent<TEntity> Query() { return _repository.Query(); }
*
********public virtual IQueryFluent<TEntity> Query(IQueryObject<TEntity> queryObject) { return _repository.Query(queryObject); }
*
********public virtual IQueryFluent<TEntity> Query(Expression<Func<TEntity, bool>> query) { return _repository.Query(query); }
*
********public virtual async Task<TEntity> FindAsync(params object[] keyValues) { return await _repository.FindAsync(keyValues); }
*
********public virtual async Task<TEntity> FindAsync(CancellationToken cancellationToken, params object[] keyValues) { return await _repository.FindAsync(cancellationToken, keyValues); }
*
********public virtual async Task<bool> DeleteAsync(params object[] keyValues) { return await DeleteAsync(CancellationToken.None, keyValues); }
*
********//IF 04/08/2014 - Before: return await DeleteAsync(cancellationToken, keyValues);
********public virtual async Task<bool> DeleteAsync(CancellationToken cancellationToken, params object[] keyValues) { return await _repository.DeleteAsync(cancellationToken, keyValues); }
*
********public IQueryable<TEntity> Queryable() { return _repository.Queryable(); }
****} |
le fichier ProjetContext.cs (accès à la base de données):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
public partial class ProjetContext : DataContext
{
static ProjetContext()
{
Database.SetInitializer<SMAContext>(new ProjetInitialize());
}
public ProjetContext()
: base("Name=ProjetContext")
{
}
public DbSet<Student> Students { get; set; }
} |
et voici mon code dans StudentsController.cs:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
private static ProjetContext cc = new ProjetContext();
//Get Student by FirstName
[Route("api/Students/{name:alpha}")]
public Student Get(string name)
{
try
{
string query = from Students in cc.Students
where Students.FirstName.Contains(name)
select Students.FirstName;
return _StudentService.SelectQuery(query,name).ToList(); //erreur dans ce ligne
}
catch (Exception ex)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
}
} |
or j'ai l'erreur suivante :
Code:
1 2
|
Cannot implicitly convert type 'System.Collection.Generic.List<Projet.Entities.Models.Student> ' to 'SMA.Entities.Models.Student' |
voici le fichier Model Student.cs:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public partial class Student : BaseEntity
****{
*******
********public string FirstName { get; set; }
********public string LastName { get; set; }
*
**public Student()
********{
************Marks = new List<Mark>();
************StudentComments = new List<StudentComment>();
********}
*
********public Student(string Firstname)
********{
************this.FirstName = FirstName;
************Marks = new List<Mark>();
************StudentComments = new List<StudentComment>();
********}
****} |
et le fichier d'initialisation de la base de données ProjetInitialize.cs:
Code:
1 2 3 4
| var Students = new List<Student>
************{
************new Student{FirstName="sam", LastName="9"},
************} |
comment je peux s'il vous plaît résoudre le problème et récupérer le "FirstName" et le "LastName" de Student selon le champ mis en valeur dans la requête "name" dans le studentController
merci pour l'aide
Pour l'erreur de conversion
Code:
Cannot implicitly convert type 'System.Collection.Generic.List<Projet.Entities.Models.Student> ' to 'SMA.Entities.Models.Student'
Pour cette erreur, il n'y a malheureusement pas la ligne où cette erreur est catcher. Mais c'est une simple erreur de Cast. Tu utilise surement deux classes Student différente ( une pour ta base et une pour "travailler" ).
Pour éviter ce problème tu doit sois créer une Interface ( non conseiller si tes classes Student ne contient que des attributs ), sinon la faire étendre de 'SMA.Entities.Models.Student' ou uniquement utiliser 'SMA.Entities.Models.Student'.
Sinon la façon pas très propre est de convertir ton objet à la main.
Si tu peux apportez plus d'information par rapport à cette erreur et ces deux classes on pourra t'aider plus facilement.