Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

System.Data.Linq in netstandard20

I have a netstandard20 project that references a .Net 4.6 Project, all compiles and runs except where I call any functionality in the .Net 4.6 project, I get the following error.

FileNotFoundException: Could not load file or assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.

In VS 2017, in the project explorer under Dependancies / SDK / Microsoft.NETCore.App I can see System.Data.dll and System.Data.Common.dll but no reference to System.Data.Linq.dll, I am assuming this is my problem and it has not been pulled in.

How do I get my project to include System.Data.Linq.dll?

If I include C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Data.Linq.dll I get the following error

BadImageFormatException: Could not load file or assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)

like image 566
Mike U Avatar asked Aug 29 '17 09:08

Mike U


People also ask

What is difference between System Linq and System data Linq?

Linq is generic-level implementation which relies on IEnumerable whereas System. Data. Linq is provider-specific (LINQ to SQL) which relies on IQueryable.

What assembly is System Linq in?

The System. Linq namespace is in the System. Core assembly (in System. Core.

Can we use LINQ in .NET core?

NET Core LINQ stands for Language Integrated Query. Language Integrated Query is one structured query that is used to retrieve data from the database and other different sources and formats. LINQ tutorials will assist you to find out the LINQ language using topics that go from basic to advanced.

Which Namespace is used to handle LINQ to SQL functionality?

The LINQ to ADO.NET functionality can be done by using the System. Data. Linq namespace.


2 Answers

I was able to solve my need to use System.Data.Linq in a .NET Standard 2.0 library by using the Mindbox.Data.Linq NuGet package.

After installing it you should be able to use the System.Data.Linq namespace just like you could when writing for .NET Framework!

like image 91
AlliterativeAlice Avatar answered Sep 21 '22 09:09

AlliterativeAlice


System.Data.Linq is not part of .NET Standard 2.0 and .NET Core 2.0 and therefore cannot be used on that platform.

Even tough you have been able add a reference to a .NET 4.6 project via the compatibility shims, it fails at runtime because of a feature that is not available on the target runtime

like image 32
Martin Ullrich Avatar answered Sep 21 '22 09:09

Martin Ullrich