fsprojects / SQLProvider

A general F# SQL database erasing type provider, supporting LINQ queries, schema exploration, individuals, CRUD operations and much more besides.
https://fsprojects.github.io/SQLProvider
Other
579 stars 146 forks source link

SSDT Provider #700

Closed JordanMarr closed 3 years ago

JordanMarr commented 3 years ago

Proposed Changes

SSDT provider as discussed in #698

Types of changes

What types of changes does your code introduce to SQLProvider? Put an x in the boxes that apply

Checklist

Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

Further comments

If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...

I haven't added my unit tests to the sln because I had a hard time getting the build and existing tests to compile and run. Hopefully the tests pass -- fingers crossed! 😁 I did add a new documentation page, and I think I linked to it on the main page, but I wasn't able to build the docs to verify.

Thorium commented 3 years ago

Huge work, thanks! It seems Appveyor CI was working before but is not with this build, however I think we can try to fix it later...

Thorium commented 3 years ago

This is now in NuGet v. 1.1.95 Let me know how it's working...

JordanMarr commented 3 years ago

This is now in NuGet v. 1.1.95 Let me know how it's working...

It's working! I dropped it into my existing project that used MSSQLSERVER provider and that worked.

Then I swapped it out with the new MSSQLSERVER_SSDT. The tricky part though is that I'm using VS2019 with NuGet PackageReferences, so when I added the Microsoft.SqlServer.Management.SqlParser.dll, I could reference it in "packages" because it stores it in a global cache: "C:\Users\jmarr.nuget\packages\microsoft.sqlserver.management.sqlparser\160.20216.14" I found the path by clicking on my project Dependencies/Packages/ and then looking at the package properties. So then I copied the "netstandard2.0" version of the dll into my project folder, added that dll to my .gitignore file, and then finally was able to reference my project folder as the ResolutionPath.
After that, it works like a charm!

So I'm thinking that maybe I need to update the docs page with a little more guidance on how to set that up properly. If you get the wrong ResolutionPath, or worse, if you try to reference the net462 version of the dll and you're using a netstandard project, it will give all kinds of crazy error messages when it tries to parse at design time.

But the good news is that it does work when setup properly!