Issue Details (XML | Word | Printable)

Key: DNET-682
Type: Task Task
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Jiri Cincura
Reporter: Michał Ziemski
Votes: 1
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
.NET Data provider

NET Core port

Created: 24/May/16 11:12 AM   Updated: 14/Aug/17 08:25 PM
Component/s: ADO.NET Provider
Affects Version/s: None
Fix Version/s: 5.6.0.0

Issue Links:
Relate
 


 Description  « Hide
NET Core RC2 was released recently.

I'd be great to have a build of NET Provider targeting one of the net platform standards:
https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md
that would be able to run in the new environment.

The API exposed by NET Core is somewhat different then the Framework.
Few example:
 - ICloneable is no more (this could be easiliy solved by removing that from the implemented interfaces list)
 - serialization was scrapped (there are some stubs available in System.Runtime.Serialization.Primitives)
 
There are may other issues. Sometimes easily solved by referencing a relevant CoreFX assembly (ie System.Data.Common, System.ComponentModel.Primitives, etc ):
https://github.com/dotnet/corefx
others regretfully require some more sophisticated changes.

There are also some points that are simply not availabe (AFAIK):
 - distributed transactions


 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Michał Ziemski added a comment - 30/Jun/16 01:09 PM
As the NET Core 1.0 is officially out I set out to try to get FbClient to compile as netstandard1.6

I was able to compile a working client in ~1 hour by excluding some parts:
 - Entity
 - Schema
 - Services
 - Events

Possibly the last two could have been saved :)

Project.json I used:

{
    "version": "1.0.0-*",

    "buildOptions": { "allowUnsafe": true },
    

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "System.Data.Common": "4.1.0",
    "System.ComponentModel.Primitives": "4.1.0",
    "System.ComponentModel.TypeConverter": "4.1.0",
    "System.Runtime.Serialization.Formatters": "4.0.0-rc3-24212-01",
    "System.Diagnostics.Contracts": "4.0.1",
    "System.Diagnostics.TraceSource": "4.0.0",
    "System.Linq": "4.1.0",
    "System.Linq.Parallel": "4.0.1",
    "System.IO.UnmanagedMemoryStream": "4.0.1",
    "System.Threading.Tasks.Parallel": "4.0.1",
    "System.Net.NameResolution": "4.0.0"
  },

  "frameworks": {
    "netstandard1.6": {
    }
  }
}

After the dependencies are there the rest of the process was reacting to changes in API in Core (rather straightforward
with a few more demandig cases).
Notable Examples:
 - there is no Encoding.Default
 - streams now Dispose rather than Close
 - ToUpper/ToLower don't take a CultreInfo parameter (migh possibly be replaced by ToUpperInvariant/ToLowerInvariant)


Michał Ziemski added a comment - 30/Jun/16 01:38 PM
One more needed dependency (with this I was able to keep Services & Events):
System.Threading.Thread": "4.0.0"

Native client requires (at least - I wasn't able to build this part) for FbClientFactory
"System.Reflection.Emit": "4.0.1"

Fernando Leal added a comment - 26/Aug/16 01:13 PM
Are there any plans for the development of issues?

There is some preliminary version that is possible to use it for testing?

Fernando Leal added a comment - 26/Aug/16 05:09 PM
As a basis for development we could use what has already been done by [Npgsql (Postgres Provider)](https://github.com/npgsql/npgsql/commit/87e8cd22e4d4f6e25f123264aeda0278a220ecd8), which has already moved the .NET driver and EF Core module (old EF7) (https://github.com/npgsql/npgsql).

I am using [this code version](https://sourceforge.net/projects/firebird/files/firebird-net-provider/5.0.5.0/) of source to make my tests! This is the official repository?

Jiri Cincura added a comment - 26/Aug/16 05:46 PM - edited
Yes, the code package is correct.

I'm planning to work .NET Core once the compression support is finished.

Tom S added a comment - 14/Aug/17 08:25 PM
.NET Standard 2.0 is now fully RTW, including the tooling: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/ (as well as .NET Core 2.0)

Would it be possible to look into upgrading the ADO.NET Provider to take advantage of the new standard? Thank you!