Skip to content

Commit 040cda2

Browse files
committed
Alpha1
1 parent 9a45e23 commit 040cda2

18 files changed

Lines changed: 376 additions & 4 deletions

Simple.Data.Ado.nuspec

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version='1.0'?>
2+
<package xmlns='http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd'>
3+
<metadata>
4+
<id>Simple.Data.Ado</id>
5+
<version>2.0.0-alpha1</version>
6+
<authors>Mark Rendle and contributors</authors>
7+
<owners>Mark Rendle</owners>
8+
<copyright>Mark Rendle</copyright>
9+
<licenseUrl>http://www.opensource.org/licenses/mit-license.php</licenseUrl>
10+
<projectUrl>http://github.com/markrendle/Simple.Data</projectUrl>
11+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
12+
<description>Simple data access for .NET 4.5 and above</description>
13+
<tags>simple.data</tags>
14+
<dependencies>
15+
<dependency id='Simple.Data.Core' version='[2.0.0-alpha1]' />
16+
</dependencies>
17+
</metadata>
18+
<files>
19+
<file src='src\Simple.Data.Ado\bin\Debug\Simple.Data.Ado.dll' target='lib\net45' />
20+
<file src='src\Simple.Data.Ado\bin\Debug\Simple.Data.Ado.pdb' target='lib\net45' />
21+
</files>
22+
</package>

Simple.Data.Core.nuspec

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version='1.0'?>
2+
<package xmlns='http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd'>
3+
<metadata>
4+
<id>Simple.Data.Core</id>
5+
<version>2.0.0-alpha1</version>
6+
<authors>Mark Rendle and contributors</authors>
7+
<owners>Mark Rendle</owners>
8+
<copyright>Mark Rendle</copyright>
9+
<licenseUrl>http://www.opensource.org/licenses/mit-license.php</licenseUrl>
10+
<projectUrl>http://github.com/markrendle/Simple.Data</projectUrl>
11+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
12+
<description>Simple data access for .NET 4.5 and above</description>
13+
<tags>simple.data</tags>
14+
</metadata>
15+
<files>
16+
<file src='src\Simple.Data\bin\Debug\Simple.Data.dll' target='lib\net45' />
17+
<file src='src\Simple.Data\bin\Debug\Simple.Data.pdb' target='lib\net45' />
18+
</files>
19+
</package>

Simple.Data.SqlServer.nuspec

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version='1.0'?>
2+
<package xmlns='http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd'>
3+
<metadata>
4+
<id>Simple.Data.SqlServer</id>
5+
<version>2.0.0-alpha1</version>
6+
<authors>Mark Rendle and contributors</authors>
7+
<owners>Mark Rendle</owners>
8+
<copyright>Mark Rendle</copyright>
9+
<licenseUrl>http://www.opensource.org/licenses/mit-license.php</licenseUrl>
10+
<projectUrl>http://github.com/markrendle/Simple.Data</projectUrl>
11+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
12+
<description>Simple data access for .NET 4.5 and above</description>
13+
<tags>simple.data</tags>
14+
<dependencies>
15+
<dependency id='Simple.Data.Ado' version='[2.0.0-alpha1]' />
16+
</dependencies>
17+
</metadata>
18+
<files>
19+
<file src='src\Simple.Data.SqlServer\bin\Debug\Simple.Data.SqlServer.dll' target='lib\net45' />
20+
<file src='src\Simple.Data.SqlServer\bin\Debug\Simple.Data.SqlServer.pdb' target='lib\net45' />
21+
</files>
22+
</package>

src/Simple.Data.Ado/AdoAdapter.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Linq;
88
using System.Threading.Tasks;
99
using Extensions;
10+
using Metadata;
1011
using Operations;
1112
using Schema;
1213

@@ -327,6 +328,11 @@ public object Clone()
327328
}
328329

329330
#endregion
331+
332+
public override IMetadata GetMetadata()
333+
{
334+
return new AdoMetadata(this);
335+
}
330336
}
331337

332338
public class ConnectionCreatedEventArgs : EventArgs
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
namespace Simple.Data.Ado.Metadata
2+
{
3+
using System.Collections.Generic;
4+
using System.Data;
5+
using System.Linq;
6+
using System.Threading.Tasks;
7+
using Schema;
8+
9+
public class AdoMetadata : IMetadata
10+
{
11+
private static readonly IList<Column> EmptyColumns = new Column[0];
12+
private readonly DatabaseSchema _schema;
13+
14+
public AdoMetadata(AdoAdapter adapter)
15+
{
16+
_schema = adapter.GetSchema();
17+
}
18+
19+
public Task<IList<Table>> GetTables()
20+
{
21+
IList<Table> tables = _schema.Tables.Select(t => new Table(t.Schema, t.ActualName)).ToList();
22+
return Task.FromResult(tables);
23+
}
24+
25+
public Task<IList<Column>> GetColumns(Table table)
26+
{
27+
IList<Column> columns;
28+
var schemaTable = _schema.FindTable(new ObjectName(table.Schema, table.Name));
29+
if (schemaTable == null)
30+
{
31+
columns = EmptyColumns;
32+
}
33+
else
34+
{
35+
columns = schemaTable.Columns.Select(c => new Column(c.ActualName, c.DbType, c.TypeName, c.IsIdentity, c.MaxLength)).ToList();
36+
}
37+
return Task.FromResult(columns);
38+
}
39+
}
40+
41+
public class Table
42+
{
43+
private readonly string _schema;
44+
private readonly string _name;
45+
46+
public Table(string schema, string name)
47+
{
48+
_schema = schema;
49+
_name = name;
50+
}
51+
52+
public string Schema
53+
{
54+
get { return _schema; }
55+
}
56+
57+
public string Name
58+
{
59+
get { return _name; }
60+
}
61+
}
62+
63+
public class Column
64+
{
65+
private readonly string _name;
66+
private readonly DbType _dbType;
67+
private readonly string _typeName;
68+
private readonly bool _isIdentity;
69+
private readonly int _maxLength;
70+
71+
public Column(string name, DbType dbType, string typeName, bool isIdentity, int maxLength)
72+
{
73+
_name = name;
74+
_dbType = dbType;
75+
_typeName = typeName;
76+
_isIdentity = isIdentity;
77+
_maxLength = maxLength;
78+
}
79+
80+
public int MaxLength
81+
{
82+
get { return _maxLength; }
83+
}
84+
85+
public bool IsIdentity
86+
{
87+
get { return _isIdentity; }
88+
}
89+
90+
public string TypeName
91+
{
92+
get { return _typeName; }
93+
}
94+
95+
public DbType DbType
96+
{
97+
get { return _dbType; }
98+
}
99+
100+
public string Name
101+
{
102+
get { return _name; }
103+
}
104+
}
105+
}

src/Simple.Data.Ado/Schema/Column.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ public virtual bool IsBinary
7979
get { return _dbType == DbType.Binary; }
8080
}
8181

82+
public string TypeName { get; set; }
83+
8284
/// <summary>
8385
/// Indicates whether the current object is equal to another object of the same type.
8486
/// </summary>

src/Simple.Data.Ado/Simple.Data.Ado.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
<Compile Include="AdoAdapterRelatedFinder.cs" />
7070
<Compile Include="AdoAdapterTransaction.cs" />
7171
<Compile Include="AdoAdapterUpserter.cs" />
72+
<Compile Include="Metadata\AdoMetadata.cs" />
7273
<Compile Include="AdoOptions.cs" />
7374
<Compile Include="BulkInserter.cs" />
7475
<Compile Include="BulkInserterHelper.cs" />

src/Simple.Data.SqlServer/Simple.Data.SqlServer.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
<Compile Include="SqlCommandOptimizer.cs" />
7373
<Compile Include="SqlConnectionProvider.cs" />
7474
<Compile Include="SqlDbTypeEx.cs" />
75+
<Compile Include="SqlDbTypeToDbType.cs" />
7576
<Compile Include="SqlObservableQueryRunner.cs" />
7677
<Compile Include="SqlQueryBuilder.cs" />
7778
<Compile Include="SqlQueryPager.cs" />

src/Simple.Data.SqlServer/SqlColumn.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace Simple.Data.SqlServer
22
{
3+
using System;
34
using System.Data;
45
using Ado.Schema;
56

@@ -11,7 +12,7 @@ public SqlColumn(string actualName, Table table) : base(actualName, table)
1112
{
1213
}
1314

14-
public SqlColumn(string actualName, Table table, SqlDbType sqlDbType) : base(actualName, table)
15+
public SqlColumn(string actualName, Table table, SqlDbType sqlDbType) : base(actualName, table, sqlDbType.ToDbType())
1516
{
1617
_sqlDbType = sqlDbType;
1718
}
@@ -21,7 +22,7 @@ public SqlColumn(string actualName, Table table, bool isIdentity) : base(actualN
2122
}
2223

2324
public SqlColumn(string actualName, Table table, bool isIdentity, SqlDbType sqlDbType, int maxLength)
24-
: base(actualName, table, isIdentity, default(DbType), maxLength)
25+
: base(actualName, table, isIdentity, sqlDbType.ToDbType(), maxLength)
2526
{
2627
_sqlDbType = sqlDbType;
2728
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
namespace Simple.Data.SqlServer
2+
{
3+
using System.Data;
4+
5+
internal static class SqlDbTypeToDbType
6+
{
7+
public static DbType ToDbType(this SqlDbType sqlDbType)
8+
{
9+
switch (sqlDbType)
10+
{
11+
case SqlDbType.BigInt:
12+
return DbType.Int64;
13+
case SqlDbType.Binary:
14+
return DbType.Binary;
15+
case SqlDbType.Bit:
16+
return DbType.Boolean;
17+
case SqlDbType.Char:
18+
return DbType.AnsiStringFixedLength;
19+
case SqlDbType.DateTime:
20+
return DbType.DateTime;
21+
case SqlDbType.Decimal:
22+
return DbType.Decimal;
23+
case SqlDbType.Float:
24+
return DbType.Single;
25+
case SqlDbType.Image:
26+
return DbType.Binary;
27+
case SqlDbType.Int:
28+
return DbType.Int32;
29+
case SqlDbType.Money:
30+
return DbType.Decimal;
31+
case SqlDbType.NChar:
32+
return DbType.StringFixedLength;
33+
case SqlDbType.NText:
34+
return DbType.String;
35+
case SqlDbType.NVarChar:
36+
return DbType.String;
37+
case SqlDbType.Real:
38+
return DbType.Double;
39+
case SqlDbType.UniqueIdentifier:
40+
return DbType.Guid;
41+
case SqlDbType.SmallDateTime:
42+
return DbType.DateTime;
43+
case SqlDbType.SmallInt:
44+
return DbType.Int16;
45+
case SqlDbType.SmallMoney:
46+
return DbType.Decimal;
47+
case SqlDbType.Text:
48+
return DbType.AnsiString;
49+
case SqlDbType.Timestamp:
50+
return DbType.Binary;
51+
case SqlDbType.TinyInt:
52+
return DbType.Byte;
53+
case SqlDbType.VarBinary:
54+
return DbType.Binary;
55+
case SqlDbType.VarChar:
56+
return DbType.AnsiString;
57+
case SqlDbType.Variant:
58+
return DbType.Object;
59+
case SqlDbType.Xml:
60+
return DbType.Object;
61+
case SqlDbType.Udt:
62+
return DbType.Object;
63+
case SqlDbType.Structured:
64+
return DbType.Object;
65+
case SqlDbType.Date:
66+
return DbType.Date;
67+
case SqlDbType.Time:
68+
return DbType.Time;
69+
case SqlDbType.DateTime2:
70+
return DbType.DateTime2;
71+
case SqlDbType.DateTimeOffset:
72+
return DbType.DateTimeOffset;
73+
default:
74+
return default(DbType);
75+
}
76+
}
77+
}
78+
}

0 commit comments

Comments
 (0)