提交 25eafd9a 编写于 作者: A Adam Schroder

Add some nullable reference type annotations

上级 d79c076f
...@@ -21,10 +21,10 @@ public override string BuildPageQuery(long skip, long take, PagingHelper.SQLPart ...@@ -21,10 +21,10 @@ public override string BuildPageQuery(long skip, long take, PagingHelper.SQLPart
return sqlPage; return sqlPage;
} }
public override string GetAutoIncrementExpression(TableInfo ti) public override string? GetAutoIncrementExpression(TableInfo ti)
{ {
if (!string.IsNullOrEmpty(ti.SequenceName)) if (!string.IsNullOrEmpty(ti.SequenceName))
return string.Format("NEXT VALUE FOR {0}", ti.SequenceName); return $"NEXT VALUE FOR {ti.SequenceName}";
return null; return null;
} }
......
...@@ -74,7 +74,7 @@ public override IsolationLevel GetDefaultTransactionIsolationLevel() ...@@ -74,7 +74,7 @@ public override IsolationLevel GetDefaultTransactionIsolationLevel()
return base.LookupDbType(type, name); return base.LookupDbType(type, name);
} }
public override void InsertBulk<T>(IDatabase db, IEnumerable<T> pocos, InsertBulkOptions options) public override void InsertBulk<T>(IDatabase db, IEnumerable<T> pocos, InsertBulkOptions? options)
{ {
SqlBulkCopyHelper.BulkInsert(db, pocos, options); SqlBulkCopyHelper.BulkInsert(db, pocos, options);
} }
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<PackageTags>orm;sql;micro-orm;database;mvc</PackageTags> <PackageTags>orm;sql;micro-orm;database;mvc</PackageTags>
<PackageProjectUrl>https://github.com/schotime/NPoco</PackageProjectUrl> <PackageProjectUrl>https://github.com/schotime/NPoco</PackageProjectUrl>
<LangVersion>8.0</LangVersion> <LangVersion>8.0</LangVersion>
<nullable>enable</nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Data.Common; using System.Data.Common;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
...@@ -13,12 +14,12 @@ public class SqlBulkCopyHelper ...@@ -13,12 +14,12 @@ public class SqlBulkCopyHelper
public static Func<DbConnection, SqlConnection> SqlConnectionResolver = dbConn => (SqlConnection)dbConn; public static Func<DbConnection, SqlConnection> SqlConnectionResolver = dbConn => (SqlConnection)dbConn;
public static Func<DbTransaction, SqlTransaction> SqlTransactionResolver = dbTran => (SqlTransaction)dbTran; public static Func<DbTransaction, SqlTransaction> SqlTransactionResolver = dbTran => (SqlTransaction)dbTran;
public static void BulkInsert<T>(IDatabase db, IEnumerable<T> list, InsertBulkOptions insertBulkOptions) public static void BulkInsert<T>(IDatabase db, IEnumerable<T> list, InsertBulkOptions? insertBulkOptions)
{ {
BulkInsert(db, list, SqlBulkCopyOptions.Default, insertBulkOptions); BulkInsert(db, list, SqlBulkCopyOptions.Default, insertBulkOptions);
} }
public static void BulkInsert<T>(IDatabase db, IEnumerable<T> list, SqlBulkCopyOptions sqlBulkCopyOptions, InsertBulkOptions insertBulkOptions) public static void BulkInsert<T>(IDatabase db, IEnumerable<T> list, SqlBulkCopyOptions sqlBulkCopyOptions, InsertBulkOptions? insertBulkOptions)
{ {
using (var bulkCopy = new SqlBulkCopy(SqlConnectionResolver(db.Connection), sqlBulkCopyOptions, SqlTransactionResolver(db.Transaction))) using (var bulkCopy = new SqlBulkCopy(SqlConnectionResolver(db.Connection), sqlBulkCopyOptions, SqlTransactionResolver(db.Transaction)))
{ {
...@@ -42,7 +43,7 @@ public static async Task BulkInsertAsync<T>(IDatabase db, IEnumerable<T> list, S ...@@ -42,7 +43,7 @@ public static async Task BulkInsertAsync<T>(IDatabase db, IEnumerable<T> list, S
} }
private static DataTable BuildBulkInsertDataTable<T>(IDatabase db, IEnumerable<T> list, SqlBulkCopy bulkCopy, SqlBulkCopyOptions sqlBulkCopyOptions, InsertBulkOptions insertBulkOptions) private static DataTable BuildBulkInsertDataTable<T>(IDatabase db, IEnumerable<T> list, SqlBulkCopy bulkCopy, SqlBulkCopyOptions sqlBulkCopyOptions, InsertBulkOptions? insertBulkOptions)
{ {
var pocoData = db.PocoDataFactory.ForType(typeof (T)); var pocoData = db.PocoDataFactory.ForType(typeof (T));
...@@ -78,7 +79,7 @@ private static DataTable BuildBulkInsertDataTable<T>(IDatabase db, IEnumerable<T ...@@ -78,7 +79,7 @@ private static DataTable BuildBulkInsertDataTable<T>(IDatabase db, IEnumerable<T
var values = new object[cols.Count]; var values = new object[cols.Count];
for (var i = 0; i < values.Length; i++) for (var i = 0; i < values.Length; i++)
{ {
var value = cols[i].Value.GetValue(item); var value = cols[i].Value.GetValue(item!);
if (db.Mappers != null) if (db.Mappers != null)
{ {
value = db.Mappers.FindAndExecute(x => x.GetToDbConverter(cols[i].Value.ColumnType, cols[i].Value.MemberInfoData.MemberInfo), value); value = db.Mappers.FindAndExecute(x => x.GetToDbConverter(cols[i].Value.ColumnType, cols[i].Value.MemberInfoData.MemberInfo), value);
......
...@@ -8,14 +8,14 @@ namespace NPoco.SqlServer ...@@ -8,14 +8,14 @@ namespace NPoco.SqlServer
{ {
public class SqlServerDatabase : Database public class SqlServerDatabase : Database
{ {
private readonly IPollyPolicy _pollyPolicy; private readonly IPollyPolicy? _pollyPolicy;
public SqlServerDatabase(string connectionString, IPollyPolicy pollyPolicy = null) public SqlServerDatabase(string connectionString, IPollyPolicy? pollyPolicy = null)
: this(connectionString, Singleton<SqlServer2012DatabaseType>.Instance, pollyPolicy) : this(connectionString, Singleton<SqlServer2012DatabaseType>.Instance, pollyPolicy)
{ {
} }
public SqlServerDatabase(string connectionString, SqlServerDatabaseType databaseType, IPollyPolicy pollyPolicy) public SqlServerDatabase(string connectionString, SqlServerDatabaseType databaseType, IPollyPolicy? pollyPolicy)
: base(connectionString, databaseType, SqlClientFactory.Instance) : base(connectionString, databaseType, SqlClientFactory.Instance)
{ {
_pollyPolicy = pollyPolicy; _pollyPolicy = pollyPolicy;
......
此差异已折叠。
#nullable enable
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq.Expressions; using System.Linq.Expressions;
...@@ -26,12 +27,12 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig ...@@ -26,12 +27,12 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig
/// <summary> /// <summary>
/// Insert POCO's into database using SqlBulkCopy for SqlServer (other DB's currently fall back to looping each row) /// Insert POCO's into database using SqlBulkCopy for SqlServer (other DB's currently fall back to looping each row)
/// </summary> /// </summary>
void InsertBulk<T>(IEnumerable<T> pocos, InsertBulkOptions options = null); void InsertBulk<T>(IEnumerable<T> pocos, InsertBulkOptions? options = null);
/// <summary> /// <summary>
/// Insert POCO's into database by concatenating sql using the provided batch options /// Insert POCO's into database by concatenating sql using the provided batch options
/// </summary> /// </summary>
int InsertBatch<T>(IEnumerable<T> pocos, BatchOptions options = null); int InsertBatch<T>(IEnumerable<T> pocos, BatchOptions? options = null);
/// <summary> /// <summary>
/// Update POCO in the specified table, primary key and primarkey value /// Update POCO in the specified table, primary key and primarkey value
...@@ -46,12 +47,12 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig ...@@ -46,12 +47,12 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig
/// <summary> /// <summary>
/// Update POCO in the specified table, primary key, primarkey value for only the columns specified /// Update POCO in the specified table, primary key, primarkey value for only the columns specified
/// </summary> /// </summary>
int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue, IEnumerable<string> columns); int Update(string tableName, string primaryKeyName, object poco, object? primaryKeyValue, IEnumerable<string>? columns);
/// <summary> /// <summary>
/// Update POCO in the specified table, primary key for only the columns specified /// Update POCO in the specified table, primary key for only the columns specified
/// </summary> /// </summary>
int Update(string tableName, string primaryKeyName, object poco, IEnumerable<string> columns); int Update(string tableName, string primaryKeyName, object poco, IEnumerable<string>? columns);
/// <summary> /// <summary>
/// Update POCO by convention or configuration for only the columns specified /// Update POCO by convention or configuration for only the columns specified
...@@ -61,7 +62,7 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig ...@@ -61,7 +62,7 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig
/// <summary> /// <summary>
/// Update POCO by primary key for only the columns specified /// Update POCO by primary key for only the columns specified
/// </summary> /// </summary>
int Update(object poco, object primaryKeyValue, IEnumerable<string> columns); int Update(object poco, object primaryKeyValue, IEnumerable<string>? columns);
/// <summary> /// <summary>
/// Update POCO by convention or configuration /// Update POCO by convention or configuration
...@@ -97,7 +98,7 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig ...@@ -97,7 +98,7 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig
/// <summary> /// <summary>
/// Update POCO's into database by concatenating sql using the provided batch options /// Update POCO's into database by concatenating sql using the provided batch options
/// </summary> /// </summary>
int UpdateBatch<T>(IEnumerable<UpdateBatch<T>> pocos, BatchOptions options = null); int UpdateBatch<T>(IEnumerable<UpdateBatch<T>> pocos, BatchOptions? options = null);
/// <summary> /// <summary>
/// Generate an update statement using a Fluent syntax. Remember to call Execute. /// Generate an update statement using a Fluent syntax. Remember to call Execute.
...@@ -112,7 +113,7 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig ...@@ -112,7 +113,7 @@ public interface IDatabase : IAsyncDatabase, IDatabaseQuery, IDatabaseConfig
/// <summary> /// <summary>
/// Delete POCO specifying the table name, primary key name and primary key value /// Delete POCO specifying the table name, primary key name and primary key value
/// </summary> /// </summary>
int Delete(string tableName, string primaryKeyName, object poco, object primaryKeyValue); int Delete(string tableName, string primaryKeyName, object? poco, object? primaryKeyValue);
/// <summary> /// <summary>
/// Delete POCO using convention or configuration /// Delete POCO using convention or configuration
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册