mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +08:00
增加Microsoft.Data.Sqlite.Core的实现
This commit is contained in:
@ -0,0 +1,42 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0;net6.0</TargetFrameworks>
|
||||
<Version>2.6.100</Version>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
||||
<Description>FreeSql 数据库实现,基于 Microsoft.Data.Sqlite.Core、Sqlite 3.0,支持 .netstandard2.0、.net6.0</Description>
|
||||
<PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageTags>FreeSql;ORM;sqlite</PackageTags>
|
||||
<PackageId>$(AssemblyName)</PackageId>
|
||||
<PackageIcon>logo.png</PackageIcon>
|
||||
<Title>$(AssemblyName)</Title>
|
||||
<IsPackable>true</IsPackable>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
||||
<DelaySign>false</DelaySign>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="../../logo.png" Pack="true" PackagePath="\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="../FreeSql.Provider.Sqlite/**/*.cs" Exclude="../FreeSql.Provider.Sqlite/obj/**/*" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'net6.0'">
|
||||
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="6.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\FreeSql\FreeSql.csproj" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<DefineConstants>MicrosoftData</DefineConstants>
|
||||
</PropertyGroup>
|
||||
</Project>
|
BIN
Providers/FreeSql.Provider.Sqlite.Data.Core/key.snk
Normal file
BIN
Providers/FreeSql.Provider.Sqlite.Data.Core/key.snk
Normal file
Binary file not shown.
@ -0,0 +1,39 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0;</TargetFrameworks>
|
||||
<Version>2.6.100</Version>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<Authors>FreeSql;ncc;YeXiangQin</Authors>
|
||||
<Description>FreeSql 数据库实现,基于Microsoft.Data.Sqlite、 Sqlite 3.0,支持 .netstandard2.0</Description>
|
||||
<PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageTags>FreeSql;ORM;sqlite</PackageTags>
|
||||
<PackageId>$(AssemblyName)</PackageId>
|
||||
<PackageIcon>logo.png</PackageIcon>
|
||||
<Title>$(AssemblyName)</Title>
|
||||
<IsPackable>true</IsPackable>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
||||
<DelaySign>false</DelaySign>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="../../logo.png" Pack="true" PackagePath="\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.0.7" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\FreeSql\FreeSql.csproj" />
|
||||
<ProjectReference Include="..\FreeSql.Provider.Sqlite.Data.Core\FreeSql.Provider.Sqlite.Data.Core.csproj" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<DefineConstants>MicrosoftData</DefineConstants>
|
||||
</PropertyGroup>
|
||||
</Project>
|
BIN
Providers/FreeSql.Provider.Sqlite.Data/key.snk
Normal file
BIN
Providers/FreeSql.Provider.Sqlite.Data/key.snk
Normal file
Binary file not shown.
@ -5,7 +5,11 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
#if MicrosoftData
|
||||
using Microsoft.Data.Sqlite;
|
||||
#else
|
||||
using System.Data.SQLite;
|
||||
#endif
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
@ -72,7 +76,12 @@ namespace FreeSql.Sqlite
|
||||
cmd.Connection = null;
|
||||
return cmd;
|
||||
}
|
||||
return new SQLiteCommand();
|
||||
#if MicrosoftData
|
||||
return new SqliteCommand();
|
||||
#else
|
||||
return new SQLiteCommand();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
public override void ReturnConnection(IObjectPool<DbConnection> pool, Object<DbConnection> conn, Exception ex)
|
||||
|
@ -4,7 +4,11 @@ using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
#if MicrosoftData
|
||||
using Microsoft.Data.Sqlite;
|
||||
#else
|
||||
using System.Data.SQLite;
|
||||
#endif
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
@ -34,7 +38,11 @@ namespace FreeSql.Sqlite
|
||||
|
||||
public void Return(Object<DbConnection> obj, Exception exception, bool isRecreate = false)
|
||||
{
|
||||
#if MicrosoftData
|
||||
if (exception != null && exception is SqliteException)
|
||||
#else
|
||||
if (exception != null && exception is SQLiteException)
|
||||
#endif
|
||||
{
|
||||
try { if (obj.Value.Ping() == false) obj.Value.OpenAndAttach(policy.Attaches); } catch { base.SetUnavailable(exception); }
|
||||
}
|
||||
@ -128,7 +136,11 @@ namespace FreeSql.Sqlite
|
||||
|
||||
public DbConnection OnCreate()
|
||||
{
|
||||
#if MicrosoftData
|
||||
var conn = new SqliteConnection(_connectionString);
|
||||
#else
|
||||
var conn = new SQLiteConnection(_connectionString);
|
||||
#endif
|
||||
return conn;
|
||||
}
|
||||
|
||||
|
@ -366,8 +366,21 @@ namespace FreeSql.Sqlite
|
||||
{
|
||||
case "Abs": return $"abs({getExp(exp.Arguments[0])})";
|
||||
case "Sign": return $"sign({getExp(exp.Arguments[0])})";
|
||||
#if MicrosoftData
|
||||
case "Floor":
|
||||
{
|
||||
var funExp = getExp(exp.Arguments[0]);
|
||||
return $"cast({funExp} as int) - ({funExp} < cast({funExp} as int))";
|
||||
};
|
||||
case "Ceiling":
|
||||
{
|
||||
var funExp = getExp(exp.Arguments[0]);
|
||||
return $"cast ({funExp} as int ) + ({funExp} > cast ({funExp} as int ))";
|
||||
};
|
||||
#else
|
||||
case "Floor": return $"floor({getExp(exp.Arguments[0])})";
|
||||
case "Ceiling": return $"ceiling({getExp(exp.Arguments[0])})";
|
||||
#endif
|
||||
case "Round":
|
||||
if (exp.Arguments.Count > 1 && exp.Arguments[1].Type.FullName == "System.Int32") return $"round({getExp(exp.Arguments[0])}, {getExp(exp.Arguments[1])})";
|
||||
return $"round({getExp(exp.Arguments[0])})";
|
||||
|
@ -4,7 +4,11 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
#if MicrosoftData
|
||||
using Microsoft.Data.Sqlite;
|
||||
#else
|
||||
using System.Data.SQLite;
|
||||
#endif
|
||||
using System.Globalization;
|
||||
|
||||
namespace FreeSql.Sqlite
|
||||
@ -33,7 +37,11 @@ namespace FreeSql.Sqlite
|
||||
dbtype = DbType.Int64;
|
||||
break;
|
||||
}
|
||||
#if MicrosoftData
|
||||
var ret = new SqliteParameter();
|
||||
#else
|
||||
var ret = new SQLiteParameter();
|
||||
#endif
|
||||
ret.ParameterName = QuoteParamterName(parameterName);
|
||||
ret.DbType = dbtype;
|
||||
ret.Value = value;
|
||||
@ -62,7 +70,11 @@ namespace FreeSql.Sqlite
|
||||
break;
|
||||
}
|
||||
}
|
||||
#if MicrosoftData
|
||||
var ret = new SqliteParameter();
|
||||
#else
|
||||
var ret = new SQLiteParameter();
|
||||
#endif
|
||||
ret.ParameterName = $"@{name}";
|
||||
if (dbtype != null) ret.DbType = dbtype.Value;
|
||||
ret.Value = value;
|
||||
|
Reference in New Issue
Block a user