mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-20 01:32:50 +08:00
* TableAttribute 禁用继承
* 修改package id 避免下载到原版 * 发布到nuget.org * xml注释文件 GenerateDocumentationFile * 解决SqlServer唯一索引不可插入多个NULL的问题 * Microsoft.Data.SqlClient 升级至 2.1.7 * 对于已经配置了TableNameImpl的表,也支持AsTable重设表名
This commit is contained in:
parent
eed213716f
commit
e46b474456
@ -9,7 +9,7 @@
|
|||||||
<PackageTags>FreeSql ORM DbContext</PackageTags>
|
<PackageTags>FreeSql ORM DbContext</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
<PackageId>$(AssemblyName)</PackageId>
|
<PackageId>$(AssemblyName).NS</PackageId>
|
||||||
<PackageIcon>logo.png</PackageIcon>
|
<PackageIcon>logo.png</PackageIcon>
|
||||||
<Title>$(AssemblyName)</Title>
|
<Title>$(AssemblyName)</Title>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<SignAssembly>true</SignAssembly>
|
<SignAssembly>true</SignAssembly>
|
||||||
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
||||||
<DelaySign>false</DelaySign>
|
<DelaySign>false</DelaySign>
|
||||||
<Version>3.5.100-preview20240825</Version>
|
<Version>3.5.100-preview20240825-ns1</Version>
|
||||||
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<None Include="../logo.png" Pack="true" PackagePath="\" />
|
<None Include="../logo.png" Pack="true" PackagePath="\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup>
|
||||||
<DocumentationFile>FreeSql.DbContext.xml</DocumentationFile>
|
<DocumentationFile>FreeSql.DbContext.xml</DocumentationFile>
|
||||||
<WarningLevel>3</WarningLevel>
|
<WarningLevel>3</WarningLevel>
|
||||||
<NoWarn>1701;1702;1591</NoWarn>
|
<NoWarn>1701;1702;1591</NoWarn>
|
||||||
|
@ -9,7 +9,10 @@ using System.Text.RegularExpressions;
|
|||||||
|
|
||||||
namespace FreeSql.DataAnnotations
|
namespace FreeSql.DataAnnotations
|
||||||
{
|
{
|
||||||
[AttributeUsage(AttributeTargets.Class)]
|
|
||||||
|
[AttributeUsage(AttributeTargets.Class
|
||||||
|
//禁用继承 nsnail@2022年11月23日14:38:45
|
||||||
|
, Inherited = false)]
|
||||||
public class TableAttribute : Attribute
|
public class TableAttribute : Attribute
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -419,4 +422,4 @@ namespace FreeSql.DataAnnotations
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,6 +10,7 @@
|
|||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
<PackageTags>FreeSql;ORM</PackageTags>
|
<PackageTags>FreeSql;ORM</PackageTags>
|
||||||
|
<PackageId>$(AssemblyName).NS</PackageId>
|
||||||
<PackageIcon>logo.png</PackageIcon>
|
<PackageIcon>logo.png</PackageIcon>
|
||||||
<Title>$(AssemblyName)</Title>
|
<Title>$(AssemblyName)</Title>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
@ -17,7 +18,7 @@
|
|||||||
<SignAssembly>true</SignAssembly>
|
<SignAssembly>true</SignAssembly>
|
||||||
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
||||||
<DelaySign>false</DelaySign>
|
<DelaySign>false</DelaySign>
|
||||||
<Version>3.5.100-preview20240825</Version>
|
<Version>3.5.100-preview20240825-ns1</Version>
|
||||||
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
@ -67,7 +68,7 @@
|
|||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup>
|
||||||
<DocumentationFile>FreeSql.xml</DocumentationFile>
|
<DocumentationFile>FreeSql.xml</DocumentationFile>
|
||||||
<WarningLevel>3</WarningLevel>
|
<WarningLevel>3</WarningLevel>
|
||||||
<NoWarn>1701;1702;1591</NoWarn>
|
<NoWarn>1701;1702;1591</NoWarn>
|
||||||
|
@ -226,7 +226,8 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_tableRule == null && _table.AsTableImpl == null) return _commonUtils.GetEntityTableAopName(_table, true);
|
if (_tableRule == null && _table.AsTableImpl == null) return _commonUtils.GetEntityTableAopName(_table, true);
|
||||||
var tbname = _table?.DbName ?? "";
|
var tbname = _table?.DbName ?? "";
|
||||||
string newname = null;
|
string newname = null;
|
||||||
if (_table.AsTableImpl != null)
|
// 对于已经配置了TableNameImpl的表,也支持AsTable重设表名 by nsnail@2024年8月26日11:10:22
|
||||||
|
if (_table.AsTableImpl != null && _tableRule == null)
|
||||||
{
|
{
|
||||||
if (_source.Any())
|
if (_source.Any())
|
||||||
newname = _table.AsTableImpl.GetTableNameByColumnValue(_table.AsTableColumn.GetValue(_source.FirstOrDefault()));
|
newname = _table.AsTableImpl.GetTableNameByColumnValue(_table.AsTableColumn.GetValue(_source.FirstOrDefault()));
|
||||||
|
@ -567,7 +567,8 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_tableRule == null && _table.AsTableImpl == null) return _commonUtils.GetEntityTableAopName(_table, true);
|
if (_tableRule == null && _table.AsTableImpl == null) return _commonUtils.GetEntityTableAopName(_table, true);
|
||||||
var tbname = _table?.DbName ?? "";
|
var tbname = _table?.DbName ?? "";
|
||||||
string newname = null;
|
string newname = null;
|
||||||
if (_table.AsTableImpl != null)
|
// 对于已经配置了TableNameImpl的表,也支持AsTable重设表名 by nsnail@2024年8月26日11:10:22
|
||||||
|
if (_table.AsTableImpl != null && _tableRule == null)
|
||||||
{
|
{
|
||||||
if (_source.Any())
|
if (_source.Any())
|
||||||
newname = _table.AsTableImpl.GetTableNameByColumnValue(_table.AsTableColumn.GetValue(_source.FirstOrDefault()));
|
newname = _table.AsTableImpl.GetTableNameByColumnValue(_table.AsTableColumn.GetValue(_source.FirstOrDefault()));
|
||||||
@ -638,7 +639,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sb.Append("INSERT INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append('(');
|
sb.Append("INSERT INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append('(');
|
||||||
var colidx = 0;
|
var colidx = 0;
|
||||||
foreach (var col in _table.Columns.Values)
|
foreach (var col in _table.Columns.Values)
|
||||||
@ -735,4 +736,4 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
return dt;
|
return dt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -734,7 +734,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (replval == null) continue;
|
if (replval == null) continue;
|
||||||
var replname = _commonUtils.QuoteSqlName(col.Column.Attribute.Name);
|
var replname = _commonUtils.QuoteSqlName(col.Column.Attribute.Name);
|
||||||
expt = expt.Replace(replname, _commonUtils.IsNull(replname, _commonUtils.FormatSql("{0}", replval)));
|
expt = expt.Replace(replname, _commonUtils.IsNull(replname, _commonUtils.FormatSql("{0}", replval)));
|
||||||
}
|
}
|
||||||
else if (col.Column.CsType == typeof(string))
|
else if (col.Column.CsType == typeof(string))
|
||||||
{
|
{
|
||||||
var replname = _commonUtils.QuoteSqlName(col.Column.Attribute.Name);
|
var replname = _commonUtils.QuoteSqlName(col.Column.Attribute.Name);
|
||||||
@ -898,7 +898,8 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_tableRule == null && _table.AsTableImpl == null) return _commonUtils.GetEntityTableAopName(_table, true);
|
if (_tableRule == null && _table.AsTableImpl == null) return _commonUtils.GetEntityTableAopName(_table, true);
|
||||||
var tbname = _table?.DbName ?? "";
|
var tbname = _table?.DbName ?? "";
|
||||||
string newname = null;
|
string newname = null;
|
||||||
if (_table.AsTableImpl != null)
|
// 对于已经配置了TableNameImpl的表,也支持AsTable重设表名 by nsnail@2024年8月26日11:10:22
|
||||||
|
if (_table.AsTableImpl != null && _tableRule == null)
|
||||||
{
|
{
|
||||||
if (_source.Any())
|
if (_source.Any())
|
||||||
newname = _table.AsTableImpl.GetTableNameByColumnValue(_table.AsTableColumn.GetValue(_source.FirstOrDefault()));
|
newname = _table.AsTableImpl.GetTableNameByColumnValue(_table.AsTableColumn.GetValue(_source.FirstOrDefault()));
|
||||||
@ -1123,7 +1124,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
sb.Append(col.DbUpdateValue);
|
sb.Append(col.DbUpdateValue);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var valsameIf = col.Attribute.MapType.IsNumberType() ||
|
var valsameIf = col.Attribute.MapType.IsNumberType() ||
|
||||||
new[] { typeof(string), typeof(DateTime), typeof(DateTime?) }.Contains(col.Attribute.MapType) ||
|
new[] { typeof(string), typeof(DateTime), typeof(DateTime?) }.Contains(col.Attribute.MapType) ||
|
||||||
col.Attribute.MapType.NullableTypeOrThis().IsEnum;
|
col.Attribute.MapType.NullableTypeOrThis().IsEnum;
|
||||||
var ds = _source.Select(a => col.GetDbValue(a)).ToArray();
|
var ds = _source.Select(a => col.GetDbValue(a)).ToArray();
|
||||||
@ -1269,4 +1270,4 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,7 +10,7 @@
|
|||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
<PackageTags>FreeSql;ORM;SqlServer;mssql</PackageTags>
|
<PackageTags>FreeSql;ORM;SqlServer;mssql</PackageTags>
|
||||||
<PackageId>$(AssemblyName)</PackageId>
|
<PackageId>$(AssemblyName).NS</PackageId>
|
||||||
<PackageIcon>logo.png</PackageIcon>
|
<PackageIcon>logo.png</PackageIcon>
|
||||||
<Title>$(AssemblyName)</Title>
|
<Title>$(AssemblyName)</Title>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
@ -18,10 +18,16 @@
|
|||||||
<SignAssembly>true</SignAssembly>
|
<SignAssembly>true</SignAssembly>
|
||||||
<DelaySign>false</DelaySign>
|
<DelaySign>false</DelaySign>
|
||||||
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
||||||
<Version>3.5.100-preview20240825</Version>
|
<Version>3.5.100-preview20240825-ns1</Version>
|
||||||
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<DocumentationFile>FreeSql.Provider.SqlServer.xml</DocumentationFile>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<NoWarn>1701;1702;1591</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="../../readme.md" Pack="true" PackagePath="\" />
|
<None Include="../../readme.md" Pack="true" PackagePath="\" />
|
||||||
<None Include="../../logo.png" Pack="true" PackagePath="\" />
|
<None Include="../../logo.png" Pack="true" PackagePath="\" />
|
||||||
|
@ -228,7 +228,17 @@ ELSE
|
|||||||
if (tbcol.IsDesc) sb.Append(" DESC");
|
if (tbcol.IsDesc) sb.Append(" DESC");
|
||||||
sb.Append(", ");
|
sb.Append(", ");
|
||||||
}
|
}
|
||||||
sb.Remove(sb.Length - 2, 2).Append(");\r\n");
|
// sb.Remove(sb.Length - 2, 2).Append(");\r\n");
|
||||||
|
// ↑ 解决唯一索引不可插入多个NULL的问题 ↓
|
||||||
|
sb.Remove(sb.Length - 2, 2).Append(") WHERE ");
|
||||||
|
foreach (var tbcol in uk.Columns)
|
||||||
|
{
|
||||||
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
sb.Append(" IS NOT NULL");
|
||||||
|
sb.Append(" AND ");
|
||||||
|
}
|
||||||
|
sb.Remove(sb.Length - 5, 5).Append(";\r\n");
|
||||||
|
// nsnail@2023年2月4日14:54:52 ↑
|
||||||
}
|
}
|
||||||
//备注
|
//备注
|
||||||
foreach (var tbcol in tb.ColumnsByPosition)
|
foreach (var tbcol in tb.ColumnsByPosition)
|
||||||
@ -449,7 +459,17 @@ use [" + database + "];", tboldname ?? tbname);
|
|||||||
if (tbcol.IsDesc) sb.Append(" DESC");
|
if (tbcol.IsDesc) sb.Append(" DESC");
|
||||||
sb.Append(", ");
|
sb.Append(", ");
|
||||||
}
|
}
|
||||||
sb.Remove(sb.Length - 2, 2).Append(");\r\n");
|
// sb.Remove(sb.Length - 2, 2).Append(");\r\n");
|
||||||
|
// ↑ 解决唯一索引不可插入多个NULL的问题 ↓
|
||||||
|
sb.Remove(sb.Length - 2, 2).Append(") WHERE ");
|
||||||
|
foreach (var tbcol in uk.Columns)
|
||||||
|
{
|
||||||
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
sb.Append(" IS NOT NULL");
|
||||||
|
sb.Append(" AND ");
|
||||||
|
}
|
||||||
|
sb.Remove(sb.Length - 5, 5).Append(";\r\n");
|
||||||
|
// nsnail@2023年2月4日14:54:52 ↑
|
||||||
}
|
}
|
||||||
sb.Append("COMMIT;\r\n");
|
sb.Append("COMMIT;\r\n");
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
<PackageTags>FreeSql;ORM;sqlite</PackageTags>
|
<PackageTags>FreeSql;ORM;sqlite</PackageTags>
|
||||||
<PackageId>$(AssemblyName)</PackageId>
|
<PackageId>$(AssemblyName).NS</PackageId>
|
||||||
<PackageIcon>logo.png</PackageIcon>
|
<PackageIcon>logo.png</PackageIcon>
|
||||||
<Title>$(AssemblyName)</Title>
|
<Title>$(AssemblyName)</Title>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
@ -18,10 +18,16 @@
|
|||||||
<SignAssembly>true</SignAssembly>
|
<SignAssembly>true</SignAssembly>
|
||||||
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
||||||
<DelaySign>false</DelaySign>
|
<DelaySign>false</DelaySign>
|
||||||
<Version>3.5.100-preview20240825</Version>
|
<Version>3.5.100-preview20240825-ns1</Version>
|
||||||
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<DocumentationFile>FreeSql.Provider.Sqlite.xml</DocumentationFile>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<NoWarn>1701;1702;1591</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="../../readme.md" Pack="true" PackagePath="\"/>
|
<None Include="../../readme.md" Pack="true" PackagePath="\"/>
|
||||||
<None Include="../../logo.png" Pack="true" PackagePath="\" />
|
<None Include="../../logo.png" Pack="true" PackagePath="\" />
|
||||||
|
62
nuget/build-and-push.ps1
Normal file
62
nuget/build-and-push.ps1
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# 定义参数
|
||||||
|
Param(
|
||||||
|
# Nuget APIKey
|
||||||
|
[string] $apikey
|
||||||
|
)
|
||||||
|
|
||||||
|
if ($apikey -eq $null -or $apikey -eq "")
|
||||||
|
{
|
||||||
|
Write-Error "必须指定apiKey";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rm -r ../FreeSql.DbContext/bin/Release
|
||||||
|
dotnet build -c Release ../FreeSql.sln
|
||||||
|
|
||||||
|
|
||||||
|
$files = Get-ChildItem -Path ../FreeSql/bin/Release -Filter *-ns*.nupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
||||||
|
$files = Get-ChildItem -Path ../FreeSql/bin/Release -Filter *-ns*.snupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$files = Get-ChildItem -Path ../Providers/FreeSql.Provider.Sqlite/bin/Release -Filter *-ns*.nupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
||||||
|
$files = Get-ChildItem -Path ../Providers/FreeSql.Provider.Sqlite/bin/Release -Filter *-ns*.snupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$files = Get-ChildItem -Path ../Providers/FreeSql.Provider.SqlServer/bin/Release -Filter *-ns*.nupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
||||||
|
$files = Get-ChildItem -Path ../Providers/FreeSql.Provider.SqlServer/bin/Release -Filter *-ns*.snupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$files = Get-ChildItem -Path ../FreeSql.DbContext/bin/Release -Filter *-ns*.nupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
||||||
|
$files = Get-ChildItem -Path ../FreeSql.DbContext/bin/Release -Filter *-ns*.snupkg
|
||||||
|
foreach($file in $files)
|
||||||
|
{
|
||||||
|
dotnet nuget push $file.fullName --skip-duplicate --api-key $apikey --source https://api.nuget.org/v3/index.json
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user