3

Я с нетерпением жду перемещения всей логики (которая реализована как манипуляция объектами Entity Framework 4) на стороне сервера. Похоже, что это будет просто (благодаря структуре приложения) и полезно (поскольку у меня есть один старый ноутбук как клиент и один жесткий сервер, который запускает SQL Server 2008, а создание отдельной службы для логики может просто ввести больше задержки если сравнивать его с базой данных).Как использовать Entity Framework в хранимой процедуре CLR?

Итак, как правильно использовать Entities Framework внутри хранимой процедуры CLR и выполнить ее с помощью SqlContext, предоставленного сервером?

Внезапно я не нашел примеров в Интернете. Похоже, что никто еще не обезвредил это. Означает ли это, что задача смехотворна, и я определенно не должен этого делать? Не очень удобно использовать T-SQL и обращаться к таблицам непосредственно вместо классов EF, потому что моя модель сильно использует наследование и имеет очень сложную структуру табличного типа для множества очень простых таблиц.

+3

«никто еще сделал это «... должен позвонить несколько колоколов. Это не значит, что предполагается использовать хранимые процедуры CLR. –

ответ

1

Нет, вы не можете. Visual Studio даже не позволит вам добавить файл или тип проекта. (Это очень плохо, я тоже хотел это сделать, чтобы обработать некоторую действительно сложную логику.)

2

Вы не можете - по крайней мере, не в это время. CLR, содержащаяся в SQL Server 2005 по 2008 R2, представляет собой .NET 2.0 CLR, а для платформы Entity Framework 4 требуется платформа .NET 4.

Так что теперь, когда вы делаете вещи в методе SQL-CLR, вы ограничены только прямым ADO.NET 2.0.

Остается вопрос: почему вы хотите использовать EF4 внутри функции SQL-CLR? Они предназначены для хранения proc, пользовательских функций, определяемых пользователем агрегатов, но, конечно, не полномасштабных приложений для баз данных, действительно ...

2

Некоторые из нас не очень заинтересованы в метаданных схемы базы данных в двух или более местах. EF отлично подходит для этого, но если вы хотите использовать преимущества производительности SQL-CLR, схема должна быть определена в ее контексте. В настоящее время это означает, что пользовательские коды метаданных в сборке SQL-CLR генерируют DDL для определения базы данных и импорта в EF.

1

Похоже, что с SQL Server 2008 R2 или выше вы можете использовать .NET ver. 4.0. См. this blog.

я запускаю следующую команду против моего SQL Server 2010 Developer Eeition:

select value from sys.dm_clr_properties where name = 'version' 

и получил следующий результат:

v4.0.30319

+0

Это не совсем так. Во-первых, версия CLR для SQL Server 2008 R2 по-прежнему равна 2.0, но может использовать версию Framework 3.5. И только потому, что версия CLR для SQL Server 2012, 2014 и 2016 - это 4.0, это не значит, что вы можете импортировать любую требуемую DLL-версию Framework. Это все равно должна быть чистая библиотека MSIL/DLL. Если он смешанный, он не будет импортироваться, даже если это правильная версия CLR. –

 Смежные вопросы

  • Нет связанных вопросов^_^