Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Sökning i objektmodelll

Postades av 2007-10-07 21:58:41 - Niclas Pehrsson, i forum arkitektur, Tråden har 17 Kommentarer och lästs av 1707 personer

Hej jag är ute efter lite artiklar och kodexempel om hur man kan bygga en
sökmotor mot objekt med reflektion. Så att jag kan skriva liknande sql satser mot en objektmodell.

Jag är inte ute efter att lägga in datan i en datatable eller dataset. Men jag är ute efter liknande funkionalitet fast med en objektmodell.


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-07 23:32:35 - Mikael Åhlén

Nu chansar jag...

Det jag kom och tänka på först är Predicate<T> och LINQ i C# 3.0 men jag antar att du vill skriva mer likt SQL som en sträng "select propertyOne from myList" isåfall kanske NHibernates HQL skulle kunna vara en bra uppslagskälla?


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-08 06:43:42 - Niclas Pehrsson

Ja det är typ HQL jag är ute efter, eftersom användaren skall kunna skapa egna frågor.
Jag har funderat på att kika på NHibernate's funktionalitet när det gäller detta, men det hade underlättat med någon artikel om det utan att bara gräva i deras kod.


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-08 10:00:31 - Mikael Åhlén

Kanske kan detta vara något? http://www.codeproject.com/cs/library/Karmencita.asp

Sedan använder NPersist NPath som är ett likande frågespråk som HQL, tror man kan ladda ner NPath för sig själv http://www.puzzleframework.com/.


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-09 21:26:06 - Mikael Åhlén

Idag fann jag NLinq, så där har du ett ytterligare projekt att kolla på http://www.codeplex.com/nlinq


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-10 13:59:07 - Niclas Pehrsson

Tack, det som hade varit grymt bra är om den hade kunnat vara väldigt lik de sqlsatser man kan skriva med t.ex. join, sum osv.. så att man kan få motorn att skapa objekt ungefär så som linq fast man kan skriva queries.

Skall på det du precis la in, måste säga att NPath var grymt snabb vid enklare frågor.


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-11 07:34:24 - Roger Alsing

>>måste säga att NPath var grymt snabb vid enklare frågor.

/Flex

Vi emittar metoder för att läsa av värdena på properties i NPath
så det bör gå betydligt snabbare än via vanlig reflection (propertyinfo.getvalue)

NPath har inte stöd för joins som sql , däremot kan man traversera property paths.
tex:

where
order.customer.streetname like '%bla%'

och subqueries

select *
from Customer
where
(select count(*) from Orders where orderdate > #2007-01-01#) > 2

^ i det fallet förutsätter den att "Orders" är en collection property på Customer


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-11 09:04:11 - Niclas Pehrsson

Okej, det som hade varit intressant är om man hade kunnat få NPath att bygga en klass beroende på vad man skriver istället för * t.ex.
Select Cutomer.Name, Order.Name From Customer Where....

Men antar att det inte går då?


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-11 10:17:31 - Roger Alsing

Det går nog med lite handpåläggning.

Vi har stöd för "TabularQueries" där man ställer en fråga mot en objektgraf , men får ut en datatable

tex:

select FirstName + ' ' + LastName as Name
from User
Where blablabla

Om man kör den frågan som tabular så kommer vi få en datatabell med en kolumn som heter "Name" som är en ihopslagning av first o lastname.

Så det är ju absolut inte omöjligt att runtime emitta klasser med samma properties.
även om det vore lite halvt meningslöst eftersom du inte skulle ha tillgång till dessa i designtime.
Inte i C# iaf.

I VB.NET går det ju köra latebinding och där skulle man absolut kunna accessa dessa properties i designtime med, fast utan intellisense då..

//Roger


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-11 15:54:30 - Niclas Pehrsson

Med vi menar du NPath?

Får gräva mig ner lite mer i det, att få ut en datatable skulle absolut fungera, om den också klarar av SUM osv :)..?

Jag kan ge ett exempel på vad jag är ute efter säg att jag har ett

Konto som har ett kontonummer, ett konto kan ha flera transaktioner.

Säg att jag vill räkna samman alla transaktioner för ett par konton som ligger inom ett visst intervall t.ex. konto-nummer 203-220. Är det möjligt?


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-11 16:25:50 - Roger Alsing

JA, i det här fallet är "vi" = NPath.
Det är jag och Mats Helander som bygger det , alltså "vi" :)


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-11 18:28:21 - Niclas Pehrsson

Okay, hittade en liten bugg i den tror jag. Kan återkomma om exakt var imorgon.


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-12 08:48:13 - Niclas Pehrsson

        public override bool Equals(object obj)
        {
            KeyStruct other = (KeyStruct) obj;

            for (int i = 0; i < keys.Length; i++)
            {
                if (keys[i] != other.keys[i])
                    return false;
            }

            return true;
        }


När jag använder exemplet med personer och addresser som följer med NPath och byter ut metodanropet mot propertyn. Så retuneras aldrig true varje gång i MultiHashTable även om det stämmer överens, detta betyder att vid många objekt så tar det enormt lång tid eftersom denna används när man skall avgöra om man behöver skapa en ny PropertyAccessor eller inte. Jag provade snabbt att ändra koden till detta.

        public override bool Equals(object obj)
        {
            KeyStruct other = (KeyStruct) obj;

            for (int i = 0; i < keys.Length; i++)
            {
                if (keys[i].ToString() != other.keys[i].ToString())
                    return false;
            }

            return true;
        }


Detta löste problemet, även om det kanske inte är rätt väg att gå.
Tar gärna lite feedback på detta om detta är ett fel eller inte så jag vet om jag skall ändra tillbaka eller ej,


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-14 09:21:18 - Roger Alsing

jag har checkat in en fix i vår SVN.


public override bool Equals(object obj)
{
    KeyStruct other = (KeyStruct) obj;

    for (int i = 0; i < keys.Length; i++)
    {
        object thisKey = keys[i];
        object thatKey = other.keys[i];

        if (Comparer.Default.Compare(thisKey,thatKey)!=0)
            return false;
    }

    return true;
}



Jag tror den ska lösa problemet.


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-16 15:11:57 - Niclas Pehrsson

Jag har insett att NPath inte täcker mitt behov när det gäller att hämta data ur min objektmodell, Däremot gör HQL det, problemet är bara att jag tycker att den inte är tillräckligt löst kopplad mot NHibernate. Jag vill ha en sökmotor i min objektmodell utan en databas.


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-17 15:35:16 - Roger Alsing

Vad är det för funktionallitet du saknar i NPath?

eller är det navigering av property paths som inte räcker?


Svara

Sv: Sökning i objektmodelll

Postades av 2007-10-17 23:27:39 - Niclas Pehrsson

Jag kanske har missat det i NPath,

men jag vill kunna skriva queries liknande dessa.

SELECT new CustomerResult(c.Name, c.Phone, c.PrimaryAddress.Line1, c.LastOrderDate) FROM Customer AS c

Där jag också kan använda lite join och groupby.

Jag funderar nu visserligen lite på Linq

Men fungerar liknande queries i NPath så är jag extremt intresserad.

Måste tacka för dina svar.


Svara

Sv:Sökning i objektmodelll

Postades av 2007-10-18 15:56:54 - Roger Alsing

Just att få ut det i nya objekt är inget som finns i NPath, det handlar ju mer om vad man gör med datan som kommer ut.

hur som, NPath har stöd för tabular queries, så man kan få ut aggregerat data.
och vi har stöd för subqueries.

så man kan tex göra:

select sum (select quantity * itemprice from Details) as OrderTotal , OrderDate
from Order


där är "Details" i subqueryn en collection prop på Order
och därmed behövs inga joins eller group by osv.

Har du något konkret exempel på fråga där du anser att group by eller speciella joins behövs?

I en domänmodell så har man ju inbyggda relationer, så jag ser inte riktigt varför joins behövs där.
om du är intresserad av att joina ihop data så borde det ju ingå som en naturlig relation i din DM.

Hur som , vore väldigt intressant om du har något fall där subqueries och propertypaths inte skulle täcka det du vill göra.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 764
27 959
271 761
375
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies