3

Entity Framework 4 개체를 조작하는 것으로 구현 된 모든 논리를 서버 측으로 이동하기를 기대합니다. 그것은 간단합니다 (응용 프로그램 구조 덕분에) 그리고 유익한 것 같습니다 (클라이언트와 SQL Server 2008을 실행하는 하나의 터프한 서버는 내가 가진 모든 것이기 때문에 로직을위한 별도의 서비스를 구축하면 더 많은 대기 시간을 가져올 수 있습니다 데이터베이스 내에서 수행하는 것과 비교할 때).CLR 저장 프로 시저에서 Entity Framework를 어떻게 사용합니까?

그래서 Entities Framework를 CLR 저장 프로 시저에서 올바르게 사용하고 호스트 서버에서 제공하는 SqlContext를 사용하여 어떻게 만드나요?

갑자기 웹에서 예제를 찾을 수 없습니다. 아무도 아직 먹지 못하는 것 같아. 그 일이 어리 석다는 것을 의미합니까? 내 모델은 상속을 많이 사용하고 매우 단순한 테이블을 많이 사용하는 매우 복잡한 테이블 당 구조를 가지고 있기 때문에 T-SQL을 사용하고 EF 클래스 대신 직접 테이블을 액세스하는 것은 그리 편리하지 않습니다.

+3

"아무도 아직이 일을하지 않았다을 "... 종을 울려 야한다. 이것은 CLR 저장 프로 시저를 사용하는 방식이 아닙니다. –

답변

1

아니요, 불가능합니다. Visual Studio에서는 파일이나 프로젝트 형식을 추가 할 수 없습니다. (너무 나쁘다. 복잡한 논리를 처리하기 위해이 작업을하고 싶다.)

2

적어도 현재로서는이 작업을 수행 할 수 없습니다. SQL Server 2005에서 2008 R2에 포함 된 CLR은 .NET 2.0 CLR이며 Entity Framework 4에는 .NET 4 프레임 워크가 필요합니다.

이제는 SQL-CLR 메서드 내에서 작업 할 때 ADO.NET 2.0만으로 제한됩니다.

그런데 더 큰 문제는 여전히 남아 있습니다. SQL-CLR 함수에서 EF4를 사용하려는 이유는 무엇입니까? 그것들은 proc, 사용자 정의 함수, 사용자 정의 집계를 저장하기 위해 고안된 것이지만 실제로는 완전한 데이터베이스 응용 프로그램은 아닙니다 ...

2

우리 중 일부는 두 개 이상의 장소에서 데이터베이스 스키마 메타 데이터를 유지하려고하지 않는다. EF는 이렇게하는 것이 좋지만 SQL-CLR의 성능 이점을 사용하려면 스키마를 해당 컨텍스트에서 정의해야합니다. 데이터베이스를 정의하고 EF로 가져 오기 위해 DDL을 생성하는 SQL-CLR 어셈블리의 사용자 지정 메타 데이터 코드를 의미합니다.

1

SQL Server 2008 R2 이상을 사용하면 .NET 버전이 사용됩니다. 4.0. this blog을 참조하십시오.

내 SQL 서버에 대해 2010 개발자 Eeition 다음 명령을 실행

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

을 다음과 같은 출력을 가지고 :

v4.0.30319

+0

이것은 완전히 사실이 아닙니다. 첫째, SQL Server 2008 R2의 CLR 버전은 여전히 ​​2.0이지만 Framework 버전 3.5를 사용할 수 있습니다. SQL Server 2012, 2014 및 2016의 CLR 버전이 4.0이기 때문에 원하는 모든 Framework DLL을 가져올 수있는 것은 아닙니다. 여전히 순수한 MSIL 라이브러리/DLL이어야합니다. 혼합 된 경우 올바른 CLR 버전이더라도 가져 오기가 수행되지 않습니다. –

관련 문제