Hej!
En liten fråga - ditt DAL-lager ska ju vara databasspecifikt och tanken är att abstraktionen ska vara tillräckligt stor för att du ska kunna byta DAL utan att byta affärslager. Hur gör du då för att utföra komplexa-SQL-frågor som även använder funktioner?
-
Lägger du det som stored procedures? (stödjs ju av de flesta produktionsdatabaser)
-
Skriver du din komplexa syntax i ditt DAL som separata funktioner och låter sedan ditt DAL returnera tex. XML, DataSets, DataTable, Structs osv...?
Sedan, om du har byggt ett community - säg att du vill skicka ett mail till alla som vill bli påminda om att en vän fyller år - var lägger du då SQL-en för denna fråga? I ditt DAL eller i ditt affärslager?
Eller har jag fått fel på det här?
Sedan så funkar det väl så att när man vill använda sina lager, så instansierar man dem genom att referera till dll-filen och sedan skriva:
NameSpace.MittDal objDAL = new MittDal();
och låter sedan detta lager returnera tex. en datatable för varje fråga?
Sen undrar jag vad som kännetecknar en "collection" - är det helt enkelt en tabell med till exempel redan behandlad data (tex. om en blogg - antal kommentarer, senast lagda kommentar, posten, författare) som är hämtad från de olika tabellerna i databasen?
Kan man på något sätt få med relationerna om man använder ett dataset - alltså utan att sätta dem programmatiskt?
Sista frågan då - om du har en shoppingapplikation, i beställningsfasen... Du väljer att hämta ett (typat?) dataset med alla lagda beställningar. Sedan lägger du till din nya beställning genom affärslagret genom att först lägga till raden i ditt dataset och sedan köra update med en dataadapter - vad händer då om du har fått in en beställning sedan datan hämtades till din dataset? Låter man då MS SQL gå med på att fortsätta och lägga in den nya datan, trots att tabellerna inte är identiska?