2012-02-11

metaclass: (Default)
2012-02-11 12:01 am

О настоящем вуду.или Entity Framework

После запуска LINQ-To-Entities с Firebird ADO.NET провайдером поневоле согласишся с [livejournal.com profile] theiced, что дотнет делает толпа чертовых индусов под руководством упоротых менеджеров и аутичных хаскелистов.
Во-первых, чтобы EF заработал, нужно сгенерировать файлы маппинга, коих, внезапно 4 штуки: dbname.csdl,dbname.msl,dbname.ssql и dbname.ObjectLayer.cs
Во-вторых, чтобы их сгенерировать - нужно чтобы EdmGen.exe увидел провайдер, что само по себе вуду, с инсталляцией в GAC, регистрацией провайдера руками в machine.config (не работает в итоге) и дальнейшим прописыванием его явно в EdmGem.exe.config
В-третьих, чтобы к полученному бреду подключится, нужно указать строку коннекта для EntityConnection, в виде:
metadata=res://*/DBLINQTests.Resources.dbname.csdl|res://*/DBLINQTests.Resources.dbname.ssdl|res://*/DBLINQTests.Resources.dbname.msl;provider=FirebirdSql.Data.FirebirdClient;provider connection string='data source=fb;initial catalog=dbname;port number=3050;user id=SOMEUSER;password=SOMEPASS;charset=WIN1251'

Т.е. это одна строка коннекта- от ADO.NET провайдера, внутри другой - от Entity Framework, причем строка коннекта должна быть в одинарных кавычках :)

В-четвертых, генерируемый SQL выглядит душераздирающе:
Read more... )

В пятых: документации внятной нет. Блогпосты, баг-репорты в трекере Firebird и тому подобный неадекват.