/
DbProviderFactory.cs
73 lines (54 loc) · 2.28 KB
/
DbProviderFactory.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Diagnostics.CodeAnalysis;
namespace System.Data.Common
{
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)]
public abstract partial class DbProviderFactory
{
private bool? _canCreateDataAdapter;
private bool? _canCreateCommandBuilder;
protected DbProviderFactory() { }
public virtual bool CanCreateBatch => false;
public virtual bool CanCreateDataSourceEnumerator => false;
public virtual bool CanCreateDataAdapter
{
get
{
if (!_canCreateDataAdapter.HasValue)
{
using (DbDataAdapter? adapter = CreateDataAdapter())
{
_canCreateDataAdapter = adapter != null;
}
}
return _canCreateDataAdapter.Value;
}
}
public virtual bool CanCreateCommandBuilder
{
get
{
if (!_canCreateCommandBuilder.HasValue)
{
using (DbCommandBuilder? builder = CreateCommandBuilder())
{
_canCreateCommandBuilder = builder != null;
}
}
return _canCreateCommandBuilder.Value;
}
}
public virtual DbBatch CreateBatch() => throw new NotSupportedException();
public virtual DbBatchCommand CreateBatchCommand() => throw new NotSupportedException();
public virtual DbCommand? CreateCommand() => null;
public virtual DbCommandBuilder? CreateCommandBuilder() => null;
public virtual DbConnection? CreateConnection() => null;
public virtual DbConnectionStringBuilder? CreateConnectionStringBuilder() => null;
public virtual DbDataAdapter? CreateDataAdapter() => null;
public virtual DbParameter? CreateParameter() => null;
public virtual DbDataSourceEnumerator? CreateDataSourceEnumerator() => null;
public virtual DbDataSource CreateDataSource(string connectionString)
=> new DefaultDataSource(this, connectionString);
}
}