О настоящем вуду.или Entity Framework
После запуска LINQ-To-Entities с Firebird ADO.NET провайдером поневоле согласишся с
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 выглядит душераздирающе:
В пятых: документации внятной нет. Блогпосты, баг-репорты в трекере Firebird и тому подобный неадекват.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Во-первых, чтобы 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 выглядит душераздирающе:
SELECT 1 AS "C1", "GroupBy1"."K1" AS "Document", "GroupBy1"."A1" AS "C2" FROM ( SELECT "Filter1"."K1" AS "K1", COUNT("Filter1"."A1") AS "A1" FROM ( SELECT "Extent1"."Document" AS "K1", CAST(1 AS SMALLINT) AS "A1" FROM "Cells" AS "Extent1" WHERE "Extent1"."Document" < 1000 ) AS "Filter1" GROUP BY "K1" ) AS "GroupBy1" Так и запишем: трансформацию не осилили.
В пятых: документации внятной нет. Блогпосты, баг-репорты в трекере Firebird и тому подобный неадекват.
no subject
no subject
no subject