Jo jag sitter och funderar lite över hur man skall göra med objekt med många-till-många relationer.
Rent objektbaserat så tycker jag att det borde se ut såhär ungefär.
Exemplet kanske inte är jättebra men det förklarar ju iallfall många till många relationen. Säg att jag har en Kund som kan ha noll eller flera telefonnummer, samt ett telefonnnummer kan ha 0 eller flera Kunder.
PhoneNumberCollection och CustomerCollection är en klass som kan lägga till, ta bort PhoneNumber, Customer osv, ja ni fattar ungefär som i en DataRowCollection.
Exempelkoden är i C#
Klassen Customer, självklart finns det CustomerId, Name osv men för enkelhetens skulle har jag lämnat det utanför.
public Class Customer
{
private PhoneNumberCollection _phoneNumberCollection;
public PhoneNumberCollection PhoneNumbers
{
get { return this._phoneNumberCollection }
}
}
Klassen PhoneNumber ser ungefär likadan ut självklart finns det en Property för telefonnummer och Id om man så vill.
public Class PhoneNumber
{
private CustomerCollection _customerCollection;
public customerCollection customers
{
get { return this._customerCollection }
}
}
Fråga 1:
I databasen så är ju detta 3 entiteter(tabeller) En Customer, PhoneNumber, CustomerPhoneNumberIndex eftersom det är en många till många men att ha 3 objekttyper av denna går väl lite emot objektbaserattänkandet eller?
Fråga 2:
Hur skall detta läsas in?
Skall det när jag laddar in Customer också ladda in alla PhoneNumbers? Då kommer ju PhoneNumbers i sin tur ladda in alla Customers. Jag har tänkt på flera lösningar på detta problemet men alla lösningar blir tämligen komplexa och onödigt stora, någon som har någon superbra lösning på detta?
Fråga 3: Väljer man att ladda in först Customer och låter den skapa alla PhoneNumbers och lägger in i Customer och sedan hämtar PhoneNumbers igen från databasen och kör: xxxxCollection.Contains(xxx obj); t.ex. då kommer den inte att matcha även om den respresenterar exakt samma rad i databasen?