Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 40 reacties

Microsoft heeft Entity Framework, een objectrelatie-mapper, vrijgegeven onder een opensourcelicentie. Ook start de softwaregigant een nieuw programma om het opensource maken en onderhouden van zijn software te ondersteunen.

Scott Guthrie, vice president van Microsofts ontwikkelafdeling, maakt op zijn weblog bekend dat de broncode van Entity Framework is vrijgegeven onder de Apache 2.0-licentie en op CodePlex is geplaatst. Entity Framework is een objectrelatie-mapper, software die gebruikt wordt in object oriented talen om objecten op te slaan en op te halen uit een relationele database. Het team achter Entity Framework legt de laatste hand aan versie vijf en heeft de roadmap voor versie zes onthuld.

Microsoft heeft onlangs meer developmentsoftware voorzien van een opensourcelicentie, zoals Asp.net mvc, Web Api en Razor. Tegelijk met het vrijgeven van de broncode van Entity Framework kondigt de softwaregigant MS Open Tech Hub aan. Open Tech Hub is een programma van dochterbedrijf Microsoft Open Technologies en heeft als doelstelling om teams van Microsoft te ondersteunen bij het opzetten en onderhouden van opensourceprojecten.

Microsoft Open Technologies groepsfoto

Moderatie-faq Wijzig weergave

Reacties (40)

Entity framework is zalig (Migrations en wat erbij hoort ook).
Als je het gebruikt met Expression Trees kun je het Specification Pattern omzeilen overigens.

Codevoorbeeldje:

Filteren van Paging (als klanten weergeven wordt als IQueryable(Of Clients) en een filter erop voor de naam die iets moet bevatten. Filters moet je niet in 1 query doen, de query wordt pas "gegenereerd" als er een tolist gedaan wordt.

Entity Framework wordt gebruikt met lambda's en/of LinQ (lijkt heel goed op elkaar - onderstaande is LinQ overigens. Lambda's lijken nog meer op SQL Queries qua syntax) . LinQ is wel veel uitgebreider dan lambda's.

Opvragen van alle klanten:
MyDataContext.Clients.All()

'Filters
Dim Clients = MyDataContext.Clients.Where(Function(el) el.Naam.Contains(Keyword))

'Meerdere filters? ...
Clients = Clients.Where(Function(el) el......... )

'Paging
Clients = Clients.OrderBy(Function(el) el.Naam).Skip(_count * _page).Take(_count)

Return View(Clients.ToList()) 'Query wordt gegenereerd en uitgevoerd met alle bovenstaande parameters

Atm. Wel in VB.Net (werk) maar in c# (hobby) is het eerder zo:

Clients = Clients.OrderBy(el => el.Naam)

Noot:
LinQ en Lambda's kunnen toegepast worden op iedere lijst, XML bestand, folderstructuur, ... Zelfs communicatie met Twitter vanwege extensions... :)
Kleine tip: Gebruik predicates & LinQPad!

PS2. Een zalige presentatie over Expression Trees zul je dit weekend terugvinden op Channel 9 ( link ), code & slides komen beschikbaar op David Hoersters blog .
Een van de beste presentaties (web conference) die ik ooit gezien heb over iets, very impressive wat die gast daar deed / toonde!
Aanrader als je bezig bent met EF!

PS. Voor biglia, ik pas dynamisch mijn connectionstrings aan. Ik vermoed dat LinQ2SQL afhangt van de connectionstring die gebruikt wordt in Web.Config..
Met EF kun je DataBase.Configuration.Connectionstring (of iets dergelijks) gewoon aanpassen en de queries worden in een andere database uitgevoerd.
Ik gebruik EF puur code-first (maar daarnaast heb je ook database first en model first).
Daarnaast kon je nog inheritance en "many2many" relaties.

Migrations kun je ook op verschillende databases toepassen vanuit Visual Studio (dankzij Powershell)

Maar inderdaad, in veel opzichten zijn ze gelijk. Maar het gaat hier nu eenmaal over EF en niet over Linq2Sql (dat niet meer ondersteund wordt) en ik vermoed dat niet iedereen zich bezighoudt met .Net ;)

Het was eerder bedoelt als voorbeeld voor mede-tweakers dan iets anders :)

[Reactie gewijzigd door NicoJuicy op 20 juli 2012 14:57]

Alles wat jij opnoemt, kan je met Linq2SQL (eigenlijk de voorloper van EF) ook.
Voordeel van Entity Framework is dan ook niet alleen in het makkelijk querien maar gewoon de volledige toegang tot je database.
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}

public class Repository : DbContext
{
public DbSet<Person> People;
}
Als jij nu ergens regelt dat er een instantie van Repository wordt aangemaakt door je IOC. Dan regelt EF dat er een tabel wordt aangemaakt wanneer deze nog niet bestaat, en ben je vrij om je (linq / lambda) queries op de People property los te laten.

Het achterliggende idee is een beetje "Vergeet je database, leer EF". Natuurlijk werkt het wel beter als je weet wat er zoal achter de schermen gebeurd :)
var person = _repository.People.FirstOrDefault(x => x.name == "GateKeaper");
*edit, code wordt hier niet ondersteund, daarom quote

[Reactie gewijzigd door GateKeaper op 20 juli 2012 14:31]

Ja, dat is EF Code First. Dat gaat niet bij Linq2SQL. EF is idd wel veel uitgebreider, en tegenwoordig het meest gebruikt. Maar met Linq2SQL kom je ook al aardig ver, volgen mij, zonder de overhead die je soms niet gebruikt in een project.
Ik zou er nog wel een .Take() achter gooien. Als je record 51 t/m 100 wilt hebben van 300.000 clients wil ik maar 50 records terugkrijgen. Niet alles vanaf 50 ;)
Das leuk, dan is er tenminste een grotere kans dat er providers voor niet-MSSQL databases komen.
Dat heeft er toch weinig mee te maken?

Het Entity Framework is gebouwd bovenop ADO.Net. Je hebt dus een ADO.Net data provider nodig voor je database en je kan EF gebruiken.

ADO.Net is geen open source maar de API die je moet implementeren voor een data provider is wel vrij beschikbaar en goed gedocumenteerd. Een eigen data provider schrijven is dan ook een fluitje van een cent als je weet wat je aan het doen bent. Het open maken van EF heeft dan ook weinig invloed op de beschikbaarheid van data providers.

Nu vraag ik mij wel af welke 'grote' database jij gebruikt waarvoor er geen ADO.Net data provider bestaat. Voor een lijstje van 'grote' databases moet je maar eens kijken op MSDN.
Volgens mij ontbreekt PostgreSQL, na MySQL toch wel de meest populaire database bij de free&open source gemeenschap. Firebird ook wel veel gebruikt, maar bij genoemde groep is PostgreSQL toch populairder al zal die waarschijnlijk ook uit principe niet voor het Windows-platform kiezen.
Die providers bestaan al een tijd hoor, zelfs voor Firebird is er een :)
Wow, Mono had dit framework niet geport, omdat het te groot was en te veel tijd ging kosten, maar dit is mooi! Kan je het ook onder linux gebruiken samen met asp.net mvc. Tijd om mn windows hoster de deur uit te doen.

[Reactie gewijzigd door - peter - op 20 juli 2012 13:26]

Explain "Tijd om mn windows hoster de deur uit te doen.". Kan ik mijn asp.net mvc websites gewoon hosten bij een linux webhoster? Of bij slechts een beperkt aantal?

Er zit wel een serieus prijsverschil op Linux vs Windows hosting. Vooral MSSQL maakt het duur.
MSSQL lijkt mij geen essentieel onderdeel van Windows webhosting. Er moeten geen appels met peren worden vergeleken.
Wel als EntityFramework alleen met MSSQL werkt en je daar gebruik van maakt.

EntityFramework werkt ook met MySQL.

Stack Overflow

[Reactie gewijzigd door aToMac op 20 juli 2012 15:12]

Ik heb er geen ervaring mee. De connectie naar de database is van cruciaal belang om een snelle website te maken. Ik heb nooit het risico willen nemen om EF met MySQL te laten samenwerken.
Snel in welke zin? Als je wil dat de queries gegarandeerd snel gaan moet je sowieso geen EF gebruiken en alles gewoon via zelfgebakken sprocs laten lopen, dan heb je de volledige controle. Maar als dat een optie was zou je vast geen EF gebruiken. :)
conspiracy theory: ze wisten dat het er aan zat te komen en zonde van de tijd zou zijn om het te porten.

haha het is maar een theorie. maar goed, erg mooi om te zien dat er steeds meer onderdelen transparant zijn/worden en te bekijken zijn. Ook grappig dat ze gebruik maken van git op codeplex voor dit project. Andere versiebeheersystemen werken ook met codeplex. ook leuk dat azure zelfs virtuele linux os installaties aanbied. ze slaan echt de laatste tijd een andere (betere) weg in.
MS heeft een traditie om open standaarden eerst te accepteren en er in later stadium eigen variaties op te maken, waarmee ze de open standaard weer ondermijnen. Dat hebben ze met Java gedaan en ook met Html. Ongetwijfeld hoopt MS door het open sourcen klanten en developers naar zich toe te trekken, en ook haar imago wat op te vijzelen.

Maar hť, open source zegt gewoon dank je wel, en als het de verkeerde kant op gaat, daaag. MS heeft open source niet alleen de oorlog verklaard, het voert een aantal bedrijven aan die via wetgeving open source tot piracy willen maken. Maar als een goed strateeg beseft Steve Balmer dat je niet alle eieren in een mandje moet leggen, en een beetje verwarring zaaien bij de andere partij is ook niet verkeerd.

Microsoft haat open source, laat daar geen twijfel over zijn, je noemt het anders geen kanker, virus enz. Logisch want open source tast de monopolieposities aan die MS juist in stand probeert te houden. Maar tegelijkertijd beseft MS ook dat in nieuwe markten waar zij zelf een underdog is, zij niet om open standaarden heen kan. Als je dan sturing wil kunnen uitoefenen dan kan dat alleen door die open standaarden zelf vorm te geven.

En hoe doe je dat? Je maakt zelf dingen en open sourced ze dan. Dan worden ze gemaakt zoals jij ze wil. Het is voor developers natuurlijk gemakkelijker om een bestaand framework te adopteren dan een alternatief te ontwikkelen. Maar ik ben er niet bang voor. Zodra je iets open sourced ben je de controle kwijt en dan gaat de gemeenschap zijn eigen gang. MS kan er voordeel mee behalen maar niet veel schade mee aanrichten.

En MS mag er ook voordeel mee behalen. Alle bedrijven die open source gebruiken en er aan bijdragen doen dat om er zelf beter van te worden, dat is helemaal geen probleem, dat is juist de bedoeling. Net zoals iedereen de openbare weg mag gebruiken om een transportonderneming op te zetten of goederen naar klanten te brengen, zo mag iedereen open source gebruiken. En dat mag ook tijdelijk. Bedrijven mogen ook weer verder gaan met gesloten code. Maar wat open source is, blijft open source.

Wil MS echt profiteren van open source dan zal ze nog heel wat aan haar imago moeten doen en een consistente gedragsverandering inzetten. Daarvoor is een cultuuromslag nodig die de huidige leiding niet gaat doen. Voorlopig blijft deze organisatie een commerciŽle variant op de Jehova's getuigen met evangelisten die de blijde boodschap uitdragen, het geloof in de superioriteit van het enige ware product dat de mensheid digitale bevrijding brengt.

[Reactie gewijzigd door Magalaan op 20 juli 2012 16:04]

MS heeft open source niet alleen de oorlog verklaard, het voert een aantal bedrijven aan die via wetgeving open source tot piracy willen maken.
Dat is een ongelooflijke B.S. Microsoft is zelfs 1 van de grootste bijdragers aan open source. Dat Microsoft, overigens net als Google en andere bedrijven die graag hun investering geaccepteerd zien worden naar een standaard, graag eigen standaarden pushed is iets anders.
http://en.wikipedia.org/w..._and_lawsuits_.281998-.29
As free software - especially GNU/Linux - became more popular, industry incumbents such as Microsoft started to see it as a serious threat. This was shown in a leaked 1998 document, confirmed by Microsoft as genuine, which came to be known as the first of the Halloween Documents.

Microsoft once compared the GPL to "a cancer", but has since stopped using this analogy. Indeed, Microsoft has long since softened its public stance towards open source in general, in recognition of the fact that open source is today an important part of the Microsoft Windows ecosystem. However, at the same time, behind the scenes, Microsoft's actions have not been as favourable towards the open source community.
Ik denk dat Microsoft o.a. inziet dat van open source niet te winnen valt.
Grootste bijdrager aan open source. Ha ha ha. Ja laten we een standbeeld op richten voor Bill Gates en Steve Balmer, de helden van de open source.

Ze hebben pas geleden flink wat code overhandigd voor de Linux kernel om de afstemming met hun eigen systemen beter te maken. Nodig want hun klanten eisen dat omdat ze ook Linux systemen willen blijven gebruiken. MS gebruikt zelf ook Linux systemen, ja ze gebruiken deze kanker omdat het toch beter werkt dan eigen spul.

En zijn ze daarom van hun geloof afgevallen? Welnee, MS moet de realiteit erkennen dat ze niet om open source heen kunnen.

Microsoft heeft ook een heel eigen opvatting van wat open source zou moeten zijn:
Steve Balmer: "I would love to see all open source innovation happen on top of Windows"

Natuurlijk. MS wil open source gebruiken om haar monopolie in stand te houden. Hoe meer er ontwikkeld wordt voor Windows hoe beter de machtspositie in stand wordt gehouden. Maar als het op alternatieven komt voor Windows zoals Linux dan wil Balmer die diep de grond in stampen want hij is niet van competitie gediend.

MS invulling van open source is om deze tegen zich zelf te laten werken en daarbij vindt hij ook nog dat bedrijven die Linux gebruiken rechten moeten afdragen aan MS. Ofwel meneer stelt zich op als een particuliere belastinginner. Precies waar open source juist van af wil.

Balmers standpunt is: I love open source developement, but not open source products. Balmer ziet open source als de de schatten van de natuur. Het is van niemand en dus pik je het in, zet er een hek omheen, en vervolgens laat je anderen er voor betalen. Dan is het ineens jouw intellectual property geworden. Hoe meer die sukkels van open source developers kunnen aanleveren , hoe beter. Maar ze mogen geen producten ontwikkelen die concurreren met Balmers producten. Dan beginnen ze te zwaaien met hun heilige rechten, want we hebben zelf ook nog wat bedacht.

Het is filosofie van de hebzucht: wel nemen en niet geven. rijker wordt je door meer te nemen dan te geven. Het verschil van deze ongelijkheid heet winst. Winst heeft een rechtvaardiging in ondernemingsloon, maar woekerwinsten uit monopolies zijn een vorm van uitbuiting. Situaties scheppen waarin mensen geen keus hebben dan akkoord te gaan met jouw prijzen en een oneerlijke uitwisseling. Systematische onevenwichtigheid tussen geven en nemen leidt tot armoede en slavernij.

Ms als open source ondersteuner? Denk je echt dat daar na vele decennia nog iemand instinkt? De open source gemeenschap denkt over MS op de zelfde manier, als we het kunnen gebruiken wat MS levert, dan zullen we het tegen ze gebruiken. We gaan niet voor MS ontwikkelen, we maken er producten mee die vrij zijn, dus kom maar op met je open source, MS.

Hebzucht is kortzichtig denken. Het werkt tot je genoeg mensen van je vervreemd hebt, daarna ondervind je steeds meer weerstand en gaat het tegen je werken. Wil MS echt de open source gemeenschap voor haar laten werken dan zal ze een heel andere business model moeten accepteren. Daarvoor moet een ware omwenteling plaatsvinden, dat gaat zeker niet gebeuren zolang MS nog haar monopolies wil uitbaten. En zal ook niemand overtuigen zolang er binnen MS geen machtswisseling plaats vindt.

Er is ooit een wedstrijd georganiseerd met hele simpele regels. Twee partijen doen een aantal rondes waarbij ze kunnen kiezen tussen samenwerking of proberen de ander iets afhandig te maken. In elke ronde kunnen ze twee opstellingen kiezen. Of de ander iets geven, of niets geven. Er zijn drie mogelijk uitkomsten.
- Beiden geven de ander 0, niemand krijgt iets,
- beiden geven de ander 1 (samenwerking), ieder ontvangt 1,5 (0,5 bonus).
- Een geeft 1, de ander 0. De gever ontvangt dan niets en de ander 1

Deelnemers mochten programma's insturen om elkaar te bestrijden. De meeste bedachten allemaal slimme strategieŽn om de ander uit te kleden. Uiteindelijk won een heel simpel programma de wedstrijd. Het heette" "Tit for tat" (Je krijgt wat je geeft). Zijn strategie was uiterst simpel. Het begon altijd met zijn goede bedoeling te tonen door iets te geven, en ging daar mee door zolang de ander dat ook deed. Maar als de ander niet over de brug kwam dan ging het gewoon het gedrag van de ander in de vorige ronde kopiŽren. Het programma won met overmacht de competitie. Waarom? Omdat het voorspelbaar was en andere programma's tot samenwerking aanzette. De programma's die andere te slim af wilden zijn, kwamen na aanvankelijke winst, niet tot een goede samenwerking en haalden veel minder binnen.

Daarom gaat Microsoft het met zijn onethische gedrag niet redden. Ze zetten niet alleen anderen onder druk of kopen ze om, ze moeten ze onder druk zetten en omkopen om nog medewerking te krijgen. Kijk naar het regime in Syrie, ze grepen de macht en bleven aan de macht door iedereen te intimideren met hun leger. Maar vanaf het moment dat ze gedwongen waren om het leger echt in te zetten tegen hun bevolking waren ze verloren.

MS heeft de open source gemeenschap tot vijand uitgeroepen (catastrofale fout), en nu bedrijven als Apple en Google hen links en rechts voorbij schieten, wil ze open source weer voor haar karretje spannen. Denk je dat dat gaat lukken? Echt niet. Misschien hebben ze bij MS het geheugen van een pinda, maar in de open source gemeenschap weten ze echt wel dat deze vos wel zijn haren maar niet zijn streken verliest.

Dus laat ze op foto's maar als McDonald medewerkers enthousiast zwaaien met bordjes met het woord "Open" erop, daar wordt niemand warm van. Een dictatuur die wil democratiseren zal heel wat meer moeten doen om het vertrouwen terug te winnen dan een parlement met ja-knikkers instellen en er woordjes als democratie op te plakken.

Microsoft heeft rijk kunnen worden over de ruggen van kinderlijk naÔeve wereldverbeteraars, hippies. Maar hť, die hebben er van geleerd. Steve Jobs heeft zijn les ook geleerd, daarom is Apple nu tweemaal zo veel waard als MS. Microsoft heeft iedereen ontgroend en nu mogen ze hun borst nat maken.

[Reactie gewijzigd door Magalaan op 20 juli 2012 19:04]

Sorry hoor, maar Google probeert ook zo veel mogelijk hun 'mening' door te drukken bij dit soort opensource projecten..

Je hebt gewoon een hekel aan MS dat is wel duidelijk uit jouw rant.. misschien moet je toch eens beter verdiepen in de bijdrage van MS aan opensource..
Mooie ontwikkeling, Entity Framework is (naar mijn mening) een erg krachtig product van Microsoft. Met dit argument is er voor mij nog minder reden om bijvoorbeeld voor NHibernate te kiezen..
:/ Het is een mooi product en na de eerste (rampzalige) versie is het ook goed bruikbaar. Ik vraag me alleen af wat MS hiermee probeert te bereiken? :/

Eerst moest je .NET gebruiken om dit aan te kunnen roepen, nu kun je zelf een branch maken en is .NET dus niet meer verplicht. Hiermee schiet MS mogelijkerwijs zijn .NET gebruik in de voet.
Het voordeel zou zijn dat ze community updates weer terug in de .NET trunk kunnen laden en goodwil creeren in de communicty
Het is een .NET library, dus het is niet zo dat je opeens in Java gebruik kunt maken van het Entity Framework. Natuurlijk zou je nu wel eenvoudiger een port kunnen maken, maar in principe ben je voor EF nog steeds aan .NET gebonden.
Ik denk dat .NET richting EOL loopt, en hetzelfde lot zal ondergaan als Silverlight. HTML5/JS is the way to go.
En op welke manier ga jij dan een hoofdzakelijk serverside technologie (.NET) vervangen door iets wat enkel UI kan aansturen?
NHibernate is veel meer dan een OR mapper, dat is ook een nadeel uiteraard.
waarom Apache2.0? Ze hebben een MS-RL license die uitermate geschikt is voor Open Source, en dat is gewoon hun eigen licentie.
Ik denk om af te rekenen met elke conspiracy theory..
Ik vermoed dat Microsoft het gebruik met broncode die onder de GPL3 valt wil vergemakkelijken.
De FSF zegt namelijk zonder enige duidelijke reden dat de Ms-RL niet compatibel is met de GPL3.
De broncode die onder Apache License 2.0 valt is wel compatibel met GPL3.
Ik vind het toch wel leuk om te zien dat CodePlex Git gebruikt.
Waarom is dit leuk? Microsoft mag volgens jou geen gebruik maken van Git?
Git is een geesteskind van Linus Torvalds.
en dus? MS heeft een eigen Linux distro.
MS laat ook teminste zien dat ze er niet vies van zijn om Linux te gebruiken.
vraag linus of andere linux fanboys eens een MS product te gebruiken :D
MS heeft een eigen Linux distro
Oh ja? Welke dan? Zover ik weet heeft Microsoft sinds Xenix geen UNIX-achtige besturingssystemen meer aangeboden.
Aangeboden niet, maar ze hebben er inderdaad wel een.
ik veronderstel dat hij wil zeggen dat het leuk is... in de positieve zin dus.
Ik heb een tijdje met nhibernate gewerkt, maar dat is onwaarschijnlijk complex. Entity framework is dan een stuk beter, maar heel erg traag.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True