2009-10-20 5 views
0

S'il vous plaît lire attentivement ma question et répondez-moi.Récupérer des données de deux tables dans asp.net mvc en utilisant ADO.Net Entity Framework

J'ai deux tables comme table1 et table2.

dans le tableau 1, j'avoir des colonnes comme AddressID (clé primaire), Adresse1, Adresse2, Ville

En table2 je colonnes comme ContactID (clé primaire), AddressID (Foriegn Key), Nom, Prénom. En utilisant l'opération de jointure, je peux récupérer des données des deux tables.

J'ai créé un modèle dans mon application MVC. Je peux voir les deux tables dans l'éditeur d'entité.

Dans le dossier ViewData de mon explorateur de solution, j'ai créé deux classes comme ContactViewData.cs et SLXRepository.cs.

Dans les ContactViewData.cs, ​​j'ai le code suivant

public IEnumerable<CONTACT> contacts 
{ 
    get; 
    set; 
} 

Dans les SLXRepository.cs, j'ai le code suivant

public IEnumerable<CONTACT> GetContacts() 
{ 
    var contact = 
    (
     from c in context.CONTACT 
      join a in context.ADDRESS on c.ADDRESSID equals a.ADDRESSID 
      select new 
      { 
       a.ADDRESS1, 
       a.ADDRESS2, 
       a.CITY, 
       c.FIRSTNAME, 
       c.LASTNAME 
      } 
    ); 

    return contact; 
} 

Je reçois l'erreur type de retour

Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' to 'System.Collections.Generic.IEnumerable<SiennaSLX.Models.CONTACT>'. An explicit conversion exists (are you missing a cast?)

Répondre

1

Dans Linq2Sql, votre requête particulière sera supprimée. urn un objet IQueryable.

Vous pouvez modifier le type de retour de votre méthode pour IQueryable

public IQueryable<CONTACT> contacts 
{ 
    get; 
    set; 
} 

public IQueryable<CONTACT> GetContacts() 
{ 
    var contact = 
    (
     from c in context.CONTACT 
      join a in context.ADDRESS on c.ADDRESSID equals a.ADDRESSID 
      select new 
      { 
       a.ADDRESS1, 
       a.ADDRESS2, 
       a.CITY, 
       c.FIRSTNAME, 
       c.LASTNAME 
      } 
    ); 

    return contact; 
} 

ou vous pouvez lancer votre valeur de retour avec la fonction .AsEnumerable():

public IEnumerable<CONTACT> GetContacts() 
{ 
    var contact = 
    (
     from c in context.CONTACT 
      join a in context.ADDRESS on c.ADDRESSID equals a.ADDRESSID 
      select new 
      { 
       a.ADDRESS1, 
       a.ADDRESS2, 
       a.CITY, 
       c.FIRSTNAME, 
       c.LASTNAME 
      } 
    ); 

    return contact.AsEnumerable(); 
} 
Questions connexes