Avatar billede flashit Nybegynder
02. juni 2009 - 22:27 Der er 8 kommentarer og
2 løsninger

Mapping af linq resultat

Hej e,
Jeg har dette object:

class Posting
    {
        public int ID { get; set; }
        public int ParrentID { get; set; }
        public int LanguageID { get; set; }
        public int SubDomaineID { get; set; }
        public string Headline { get; set; }
        public string PostingText { get; set; }
        public DateTime PostedDate { get; set; }
        public bool IsActive { get; set; }
        public bool Deleated { get; set; }
        public int GalleryID { get; set; }
    }
Det vil geg gerne bruge i mit DAL.

Derfor bruger jeg linq til at komme til min database.

public Posting GetPostingByID(int PostID, int LanguageID)
        {
            Posting _Posting = new Posting();
            try
            {
                DataModelDataContext db = new DataModelDataContext();

                var q = from p in db.Postings
                        where p.ID == PostID && p.LanguageID == LanguageID
                        select p;               
            }
            catch (Exception)
            {
                _Posting = null;
                throw;
            }
            return _Posting;
        }

Men hvordan kan jeg komme til at putte de retunerede værdier ind i mit _Posting objekt.
Ville gerne kunne mappe på følgende måde.

_Posting.ID = q.ID;
_Posting.ParrentID = q.ParrentID

Men ved ikke hvordan jeg kommer ind til værdierne fra det retunerede q
Avatar billede arne_v Ekspert
02. juni 2009 - 22:33 #1
Du behoever ikke goere noget.

Slet alt med _Posting og lav en:

return q.First();
Avatar billede flashit Nybegynder
02. juni 2009 - 22:37 #2
men hvad er det så jeg retunere. Det er vel ikke mit Posting objekt.
Avatar billede arne_v Ekspert
02. juni 2009 - 22:47 #3
Jo.

Hvis jeg laeser din kod ekorrekt saa indeholder q en enumerering af Posting objekter.
Avatar billede flashit Nybegynder
02. juni 2009 - 22:58 #4
Jeg tror at det er min navngivning der helt i hegnet.

q "læser" fra en tabel med navnet "Postings".
Resultatet vil jeg gerne drible op gennem mine lag (DAL, BLL UI)

Det vil jeg gøre ved at oprette et objekt med navnet Postings. Postings objektet har samme propertys som tabellen har felter.

giver det mening?
Avatar billede Syska Mester
03. juni 2009 - 00:02 #5
Som Arne_v skriver ... så vil dine datacontext allerede indeholde en mapping af et object af den type som du kan bruge ... at det så lader til at du selv har opretet det ... er en anden ting.

Du kan gøre noget ala:
Post p = DB.ForumPosts.Select(a => new Post(){ ThreadID = a.ThreadID, PostID = a.PostID).DefaultOrFirst();
Avatar billede flashit Nybegynder
03. juni 2009 - 09:14 #6
Hej

Det er også rigtigt.
Mit problem er bare at jeg ikke kan finde ud af at komme fra mit UI lag til mit BLL og videre til mit DAL hvis jeg bruger den mapping som datacontext indeholder. Mit UI lag kender jo ikke til DAL og derfor ikke til Postings objektet fra datacontext.

Kan i komme med et link eller et eks på hvordan man gør med linq eller entity framework og 3tier applikation. Jeg har endnu ikke kunne finde noget der har hjulpet til at jeg har forstået det.

og tak for hjælpen :-)
Avatar billede arne_v Ekspert
03. juni 2009 - 14:55 #7
Du sender da bare dit Posting objekt op gennem lagene.

Saa skal du betragte den klasse som domain layer og ikke som DAL, men ...
Avatar billede flashit Nybegynder
04. juni 2009 - 22:23 #8
Tak for jeres hjælp. Lægger I ikke et svar :-)
Avatar billede arne_v Ekspert
05. juni 2009 - 01:13 #9
kommer her
Avatar billede Syska Mester
05. juni 2009 - 13:06 #10
svar hvis du også mener mig.

// ouT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester