Jag håller som bekant på med Databasclasser och tror jag kommit till DataAccessskitet där jag ska ärva lite metoder men då undrar jag hur jag ska skriva för att min ConnenctionString ska ärvas automatiskt. Eller Jag ska fråga om det går för det första??
Jag har kommit hit
[red]
using System;
using System.Data;
using System.Data.OleDb;
namespace Meditrix.DataAccess
{
/// <summary>
/// Summary description for DataAccess.
/// </summary>
public class DataAccess : Icaaq.Data.OleDbData
{
[b]//Raden nedanför vill jag ska ärvas in i Icaaq.Data.DataAccess[/b]
string Connection = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\xxx\xxx.mdb";
public DateTime RetriveNewsDate()
{
}
}
}
[/red]
mvh icaaq
[redigerade bort private då jag inte tror att den ska vara där [/redigerat]
[redigerade igen]Förstås ska det vara en Connection [/redigerade igen]
Jag tänkte ange den i konstruktorn. Det ser ut så här nu
[red]using System;
using System.Data;
using System.Data.OleDb;
namespace Meditrix.DataAccess
{
/// <summary>
/// Summary description for DataAccess.
/// </summary>
public class DataAccess : Icaaq.Data.OleDbData
{
//Här nedanför vet jag inte vad jag ska skriva
string Connection = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\xxx\xxx.mdb";
public DateTime RetriveNewsDate()
{
}
}
}
[/red]
och den ärvda
[red]
using System;
using System.Data;
using System.Data.OleDb;
namespace Icaaq.Data
{
/// <summary>
/// Summary description for OleDbData.
/// </summary>
public abstract class OleDbData
{
protected OleDbConnection Connection;
/// <summary>
/// A valid connectionstring
/// </summary>
/// <param name="ConnectionString"></param>
public OleDbData(string ConnectionString)
{
Connection = new OleDbConnection(ConnectionString);
}
[/red]
Ja, fast nu förstår jag inte riktigt. I din basklass så är ju Connection av typen string och i din ärvda klass är den definierad som OleDbConnection. Om du gör så så omdefinierar du ju medlemsvariabeln.
Om du avser att använda samma medlemsvariabel i din ärvda klass så ska du inte deklarera om den. Den kommer att vara tillgänglig ändå om den är deklarerad som tex protected i basklassen.
Lägg connectionstringen i en konfig fil istället. Då slipper du kompilera om den dagen du byter inloggningsid eller db etc.
I din generella db-klass som du ärver in i de andra db-klasserna skapar du en property som sätter connection-stringen genom att läsa upp strängen från config filern.
Jag har ett vb exempel på hur jag tänker. Nu har jag grejat lite i det utan att testa det helt men jag tror att ni kan se mina tankar där.
Bygger på 2 assemblys. En för presentations skiktet och en för business och dataaccess skikten. Egentligen bör dataaccess skiktet ligga i en egen assembly.