I have really been interested in this for a while and have taken some time over the past few days.
Unfortunately, FILESTREAM uses several NTFS and NT system calls (in particular, NtCreateFile , DeviceIoControl , but several others to support them) to control file access. Unfortunately, at the time of this writing, the latest CTPs for MSSQL for Linux do not support FILESTREAM, and there is little clarity as to what the roadmap is or where it may be (oddly enough, you can restore a database that supports FILESTREAM, but FileTable doesn seems to be supported.)
There are two problems here: it is not clear that replacing certain NT APIs will respect transaction integrity (or even work at all), and it is not clear that they can ever work from a non-Windows environment. Due to these facts, I do not see SqlFileStream support SqlFileStream soon for the kernel.
There is some use case for Windows. Only a low-level type, for example, in System.Net.Socket.IOControl . SqlFileStream could go the same way. Alternatively, it may be possible to create a specific SqlFileStream NuGet package, but it will only be supported / run on Windows. I'm not sure how useful this would be - if you are going to use P / Invoke for Windows only, why not just P / Invoke for DLL.NET 4.6.x?
Redirecting this question to github: https://github.com/dotnet/corefx/issues/15652
Change As an alternative to P / Invoke, you can certainly create another type of service (RESTful, WCF, some other channel or TCP or even a memory-mapped file) in .NET 4.x for the .NET Core library or access application.
source share