Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[C#.NET] inherrit classes

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb nu het volgende model.

Er bestaan klanten en subklanten. Een aantal van hun properties zijn hetzelfde. Een subklant hangt aan een klant.

Verder zijn er projecten die als property klant hebben en subklant. Dus dat ziet er zo uit:

code:
1
2
3
Project -------------------------------------   klant
 |                                                |
------------------ subklant----------------------


Het probleem is nu dat project 2 propertys heeft voor de klant eentje voor subklant en eentje voor klant. Echter heeft een klant ook weleens projecten, dus dan heb je een lege property. En dat beide klanten veel dezelfde propertys hebben.

Nu vroeg ik me af of het ook alsvolgt kan worden opgelostmbv inherrit.

code:
1
2
3
4
Project ------------- Klant
                         ^
                         |
subklant ----------------------------- subklant2


Dus dat project 1 property klant heeft, maar dat dat een subklant of een subklant2 kan zijn.Verder blijven er gewoon 2 tabellen in de database voor subklant en subklant2 via nhibernate.

[ Voor 3% gewijzigd door Verwijderd op 09-05-2008 12:04 ]


Verwijderd

Als je subklant laat overerven van klant kan dat ja.

public class subklant : klant

Nu kan je zowel een Klant als een Subklant (en alle andere subklantx typen die je laat overerven van klant) in een veld van het type Klant opslaan, waarmee je dus geen twee aparte properties nodig hebt :).

[ Voor 23% gewijzigd door Verwijderd op 09-05-2008 12:09 ]


Verwijderd

Topicstarter
Kijk, dit wilde ik even weten.
Of ik dus alle types van subklant in een property van het type klant kan opslaan.

Ik neem aan dat het ook mogelijk is om een subklant als property in subklant2 op te nemen. Dat lijkt me geen probleem.

Heet erg bedankt.
Wilde even een zekerheidje hebben voordat ik mijn projectje ga ombouwen.

Nu nog even uitvogelen hoe dat zit met nhibernate, maar dat komt wel goed.

[ Voor 17% gewijzigd door Verwijderd op 09-05-2008 12:19 ]


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 13-11 10:30

mOrPhie

❤️❤️❤️❤️🤍

De vraag is of subklant functioneel gezien wel een klant is. Wat is subklant voor iets? Inheritence gebruik je bij een "is een" relatie, of wanneer je aspect-technisch wil abstraheren. Is een subklant ook een klant van jullie of is een subklant een klant van jullie klant? In de 2e situatie is inheritence functioneel onjuist. Er zijn dan andere opties, maar voordat ik die ga uitschrijven moeten we dus eerst even weten wat het verschil tussen een klant en subklant -functioneel- is. :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Verwijderd

Topicstarter
Een klant in een klant van ons (voor de facturatie). Een subklant is een klant van een klant. Die subklant heeft projecten bij ons.

Echter zijn er ook klanten (voor facturatie) die rechtstreeks projecten bij ons hebben.

Mij leek die inherrit wel een goede optie, maar dat blijkt dus functioneel onjuist?

Je hebt dan maar 1 property bij project nodig. Onder klant hangen subklant en facturatieKlant en de subklant heeft dus ook een property facturatieKlant

[ Voor 20% gewijzigd door Verwijderd op 09-05-2008 12:24 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik vroeg me een beetje hetzelfde af als mOrphie. Is een Klant niet hetzelfde als een SubKlant ( op de relatie met het project na?

Moet je dan uberhuapt wel een aparte class voor SubKlant hebben?

De vraag is dus wat is de functie van Klant/SubKlant en wat zijn de overeenkomsten en verschillen tussen deze 2

edit:
Aan de hand van je reactie zou ik me voor kunnen stellen dat zowel Klanten als SubKlanten gewoon "Relaties" zijn. Je kan dan door middel van associaties ( en in de database koppeltabellen ) aangeven of iemand een klant/SubKlant is. Het kan dan later ook voorkomen dat een Relatie zowel een klant is van jullie als een klant van jullie klant ( en dus een SubKlant ). Het lijkt me dat het een het ander niet uitsluit

[ Voor 40% gewijzigd door Woy op 09-05-2008 12:26 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
De overeenkomsten van klant en subklant zijn de naw-gegevens. en dat ze bij een project kunnen horen.
De verschillen:
- een subklant hoort een klant hoort.
- een klant heeft kvk, btw en nog meer andere velden dan subklant.

Vanwege het idee dat een project bij een klant kan horen leek me inherrit een optie. Dan kan een klant namelijkeen klant of een subklant zijn.

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:58
Verwijderd schreef op vrijdag 09 mei 2008 @ 12:33:
- een klant heeft kvk, btw en nog meer andere velden dan subklant.
Dat klopt dan dus al niet, als je SubKlant inherit van Klant heeft SubKlant dus ook kvk, btw etc.

Roomba E5 te koop


Verwijderd

Topicstarter
Sorry voor de rare naamgeving, maar mijn idee is:
code:
1
2
3
4
Project ------------- Klant
                         ^
                         |
subklant ----------------------------- hoofdklant


De overeenkomsten van hoofdklant en subklant zijn de naw-gegevens / contactpersoon. en dat ze bij een project kunnen horen.
De verschillen:
- een subklant hoort bij een hoofdklant.
- een hoofdklant heeft kvk, btw en nog meer andere velden dan subklant.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maak dan een Persoon (oid) met naw gegevens, en Klant en SubKlant daarvan als afgeleidden.

.edit: ja zo ja, dat lijkt me een stuk beter.

[ Voor 21% gewijzigd door .oisyn op 09-05-2008 12:47 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Zoals ik net hierboven beschreef dus.
De verwarring kwam door de naamgeving.

Maar het probleem is dus of het functioneel juist is dan dat een subklant een property heeft met een hoofdklant erin.

[ Voor 3% gewijzigd door Verwijderd op 09-05-2008 12:48 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom zou dat niet juist zijn? Een subklant heeft toch een koppeling met een hoofdklant?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Klopt. En het zijn allebei klanten.
Dan ga ik het zo implementeren.In ieder geval allemaal heel erg bedankt voor de snelle reacties.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zou je het dan niet zoiets doen?

Afbeeldingslocatie: http://woy.nl/Klant.jpg

Een relatie heeft dan 0 of meer Sub-relaties. Een relatie heeft een Sub-Class Klant. Een Project heeft vervolgens weer een klant.

Op deze manier is het ook mogenlijk dat een Klant een Sub-Klant is.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maar daarmee kun je weer geen extra info opslaan voor een subklant (geen idee of dat nodig is overigens hoor). En ook kun je dan subsubklanten en subsubsubklanten definieren e.d. ;). Moet dat lijntje trouwens niet een 1:n relatie zijn ipv een m:n relatie?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Dat zou misschien ook kunnen.

Heb echter nog een ander vraagje.
Ben nu bezig met de andere implementatie (inherrit). Dit werkt allemaal goed.

Alleen heb ik een probleempje met het mappen van de classes naar de tabel.

Ik heb de volgende info:
http://www.hibernate.org/...ate/html/inheritance.html

En wil graag de table-per-concrete-class methode gebruiken.

Nu heb ik de HoofdKlant en de SubKlant gemapped,

Maar de Klant lukt me niet echt. Ik kan dat any-atribuut niet echt plaatsen. Heeft iemand hier toevallig ervaring mee?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op vrijdag 09 mei 2008 @ 15:55:
Maar daarmee kun je weer geen extra info opslaan voor een subklant (geen idee of dat nodig is overigens hoor). En ook kun je dan subsubklanten en subsubsubklanten definieren e.d. ;).
Verwijderd schreef op vrijdag 09 mei 2008 @ 12:33:
De overeenkomsten van klant en subklant zijn de naw-gegevens. en dat ze bij een project kunnen horen.
De verschillen:
- een subklant hoort een klant hoort.
- een klant heeft kvk, btw en nog meer andere velden dan subklant.
Hier staat dat het enige specifieke voor een sub-klant is dat hij bij een sub-klant hoort, dus is er geen extra class nodig lijkt me. Of de informatie moet niet compleet zijn, maar dat kan ik vanaf hier niet zien natuurlijk
Moet dat lijntje trouwens niet een 1:n relatie zijn ipv een m:n relatie?
Iemand kan toch ook Sub-Klant zijn bij meerdere Klanten? Dus lijkt me een m:n relatie
Verwijderd schreef op vrijdag 09 mei 2008 @ 15:58:
Dat zou misschien ook kunnen.

Heb echter nog een ander vraagje.
Ben nu bezig met de andere implementatie (inherrit). Dit werkt allemaal goed.

Alleen heb ik een probleempje met het mappen van de classes naar de tabel.

Ik heb de volgende info:
http://www.hibernate.org/...ate/html/inheritance.html

En wil graag de table-per-concrete-class methode gebruiken.

Nu heb ik de HoofdKlant en de SubKlant gemapped,

Maar de Klant lukt me niet echt. Ik kan dat any-atribuut niet echt plaatsen. Heeft iemand hier toevallig ervaring mee?
Bij de Table-per concrete-class hoef je de Klant class niet te mappen lijkt me. Het is tenslotte geen concrete class. Je hebt immers alleen instanties van of HoofdKlant of SubKlant

[ Voor 29% gewijzigd door Woy op 09-05-2008 16:30 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Heb er nog even naar zitten kijken, en die oplossing is inderdaad nog niet zo gek. Volgens mij is dat precies wat ik nodig heb.

Verder heb ik die klant class inderdaad niet gemapped, maar project heeft wel een property klant, dus bij opstarten van de applicatie krijg ik de volgende melding: An association from the table tbl_project refers to an unmapped class: Klant

Dus dit moet ik nog even oplossen. Overstappen naar de oplossing van rwb is dan niet zo moeilijk.

Echter krijg je dan wel null-values in je database als een klant geen klant boven aich heeft.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op vrijdag 09 mei 2008 @ 16:40:
Verder heb ik die klant class inderdaad niet gemapped, maar project heeft wel een property klant, dus bij opstarten van de applicatie krijg ik de volgende melding: An association from the table tbl_project refers to an unmapped class: Klant
Omdat je geen Property kan gebruiken bij table-per-concrete class, maar het any element moet gebruiken. ( Staat op de pagina die je zelf aanhaalt )
Echter krijg je dan wel null-values in je database als een klant geen klant boven aich heeft.
Nee dat hoeft niet want je gebruikt natuurlijk gewoon een koppeltabel voor de relatie tussen relaties ( het is een m:n relatie )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1