webForumDet fria alternativet

Vad tycker ni om Linq

.NET

3 svar · 445 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej

Jag har labbat lite med Linq i ett projekt. Vet inte riktigt ännu vad jag tycker om det. Svårt att skapa sig en uppfattning förens man behärskar det.

Jag tycker att det verkar suveränt i vissa lägen när man snabbt behöver få ut information till något som man kanske inte kommer att behöva någon annan stans. men när det gäller vanligt förekommande sökningar som att t.ex. ta ut en användare så har jag hellre färdiga metoder. Iof skulle man kanske kunna ha en metodklass för det?

Ändringar i databasen verkar dessutom ställa till en del problem.
Länkningstaballer där primary key består av två kolumner verkar heller inte kunna hanteras automatiskt. Av länkningstabellen vill man kanske inte heller ha en klass.

Exempel.
Tabeller:
Users
Cars
CarOwners

där CarOwners innehåller:
CarID
UserID

Vad säger ni?

Medlem sedan jan. 20012 204 inlägg
#2

Jag tycker LINQ-SQL funkar kanon. Kör med designern och bara drar in tabellerna, hur smidigt som helst. Många till Många relationer funkar bra för mig, så tabeller med flera kolumner som primärnyckel fungerar bra. T.ex koden nedan:

[Column(Storage="_SystemID", DbType="Int NOT NULL", IsPrimaryKey=true)]
      public int SystemID
		{
			get
			{
                         ...
			}
			set
                         ...
			}
		}
		
[Column(Storage="_UserID", DbType="Int NOT NULL", IsPrimaryKey=true)]
		public int UserID
		{
			get
			{
                         ...
			}
			set
			{
                         ...
			}
		}

Bra sql-kod tycker jag också att den genererar, i de enkla fall jag testat, man får väl passa sig vid en del foreach-loopar så att man inte ansluter till databasen vid varje loop bara. Klassen DataContext kan du ju implementera partiellt så säg att du vill ha en funktion GetUsers() som du använder ofta så är det rätt smidigt att ha den direkt i DataContext.

public partial class UserDataContext
{
        public List<Users> GetAllUsers()
        {
            var query = from s in Users
                        select s;
            return query.ToList();
        }
}
Medlem sedan maj 20012 812 inlägg
#3

Jag tycker att själva LINQ implementation är helt okej, det är enkelt att förstå och göra frågor mot collectioner. Däremot så tycker jag LINQ to SQL är ett hafsverk och fortsätter på MS "klicka-gissa-spring" variant.

EntityFramework är däremot ett bättre alternativ, även om MS verkar ha fruktansvärt svårt att förstå att man oftast inte utgår ifrån en databas-modell när man designar sina system. När EF kommit så långt att jag kan ta mina färdiga entiteter i mitt eget assembly och mappa ihop dem med en databas, då är jag lycklig och kan gå över till den världen helt och hållet. Fram till dess så kör jag med egen OR-Mapper och skriver egen SQL-kod....

- M

Medlem sedan jan. 20022 440 inlägg
#4

Jag är inte så förtjust i just LINQ men älskar Entity Framework. Har inga bekymmer med att inte "first model" principen finns i EF.

Använder dessutom en egen variant av Gladhs OR-Mapper i en del projekt då det är fruktansvärt enkelt och väldigt lärorikt.

254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)