Toon posts:

NHibernate run-time mapping / legacy databasestructuur

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 10:29
Ik werk aan een webapplicatie, waarbij elke klant bij een aantal tabellen zelf extra kolommen kan toevoegen aan een aantal van de entiteiten die hij gebruikt. Deze extra kolommen worden aan de betreffende tabel in het databaseschema van de klant toegevoegd. Elke klant heeft dus een verschillend aantal extra kolommen.

Deze applicatie is al uit het DOS-tijdperk, en de databasestructuur dus ook :) Helaas mag ik de structuur niet wijzigen, en is het problematisch om met NHibernate deze tabellen te mappen.

Er zijn dus bijvoorbeeld tabellen:

code:
1
2
3
Klant 1: Personeel { ID, Naam, Schoenmaat }
Klant 2: Personeel { ID, Naam }
Klant 3: Personeel { ID, Naam, Rekeningnummer, Auto, HeeftRijbewijs }


Wat ik dus wil is een object

C#:
1
2
3
4
5
6
class Personeel
{
    public String ID { get; set; }
    public String Naam { get; set; }
    public Dictonary<String, Object> ExtraVelden { get; } 
}


Er is binnen de datbase bekend welke extra kolommen er zijn en van welk type (de metadata staat in een aantal tabellen).

Ik ben geen NHibernate expert, en google levert alleen maar op 'je tabelstructuur is fout, pas die aan' dus ik zit vast.

Heeft iemand een idee?

Acties:
  • 0Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 01-06 14:54
dynamic component

Acties:
  • 0Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 22-05 23:04

Niemand_Anders

Dat was ik niet..

Heb je al eens naar Dapper.net gekeken? Veel zaken welke bij ons zeer moeizaam zijn met NHibernate (of EF, L2S, etc) waren een eitje met Dapper.

Als het geen probleem is dat je zelf de queries schrijft is Dapper een zeer goed framework. Je zou eventueel ook naar 'Massive' kunnen kijken. Net als Dapper is dat een micro ORM van nog geen 500 regels code..

If it isn't broken, fix it until it is..



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee