수색…


구성 필요

  1. 필요한 Microsoft.SqlServer.Types 어셈블리를 설치하십시오. 기본적으로 설치되지 않으며 여기 에서 "Microsoft® SQL Server® 2012 용 Microsoft® System CLR 유형"으로 Microsoft 에서 사용할 수 있습니다 . x86 및 x64 용 설치 관리자는 별도입니다.

  2. Dapper.EntityFramework (또는 강력한 이름의 해당 항목)을 설치하십시오. 이것은 IDE의 "Manage NuGet Packages ..."UI 또는 (패키지 관리자 콘솔에서) 수행 할 수 있습니다.

    install-package Dapper.EntityFramework
    
  3. 필요한 어셈블리 바인딩 리디렉션을 추가합니다. 이것은 Microsoft가 v11의 어셈블리를 제공하기 때문입니다.하지만 Entity Framework는 v10을 요구합니다. <configuration> 요소 아래의 app.config 또는 web.config 에 다음을 추가 할 수 있습니다.

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Microsoft.SqlServer.Types" 
              publicKeyToken="89845dcd8080cc91" />
          <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    
  4. 사용할 수있는 새로운 유형의 핸들러에 대해 "dapper"에게 (데이터베이스를 사용하기 전에 스타트 업 어딘가에) 추가하여 알려주십시오.

    Dapper.EntityFramework.Handlers.Register();
    

기하학 및 지리학 사용

형식 핸들러가 등록되면 모든 것이 자동으로 작동하므로 매개 변수 또는 반환 값으로 이러한 유형을 사용할 수 있어야합니다.

string redmond = "POINT (122.1215 47.6740)";
DbGeography point = DbGeography.PointFromText(redmond,
    DbGeography.DefaultCoordinateSystemId);
DbGeography orig = point.Buffer(20); // create a circle around a point


var fromDb = connection.QuerySingle<DbGeography>(
  "declare @geos table(geo geography); insert @geos(geo) values(@val); select * from @geos",
  new { val = orig });

Console.WriteLine($"Original area: {orig.Area}");
Console.WriteLine($"From DB area: {fromDb.Area}");


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow