From 2d2a0e211ed6d888d768826dd647c8e95efbc289 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Wed, 23 Sep 2020 11:21:21 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20Oracle=20DbFirst=20?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E7=9A=84=E6=94=AF=E6=8C=81=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FreeSql.Generator.csproj | 2 +- .../FreeSql.Tests/Oracle/OracleDbFirstTest.cs | 2 ++ .../SqlServerAdo/SqlServerAdoTest.cs | 10 +++++++++- .../Oracle/OdbcOracleDbFirst.cs | 19 ++++++++++++++++--- .../FreeSql.Provider.Oracle/OracleDbFirst.cs | 19 ++++++++++++++++--- 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj index d8deda05..390f6b4c 100644 --- a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj +++ b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj @@ -12,7 +12,7 @@ 使用 FreeSql 快速生成数据库的实体类,安装:dotnet tool install -g FreeSql.Generator https://github.com/2881099/FreeSql https://github.com/2881099/FreeSql - 1.9.0-preview0920 + 1.8.1.330 FreeSql DbFirst 实体生成器 diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleDbFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleDbFirstTest.cs index c3cfaaa0..3ffdad38 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleDbFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleDbFirstTest.cs @@ -33,6 +33,8 @@ namespace FreeSql.Tests.Oracle Assert.Equal(t1.Columns.Count, t2.Columns.Count); var t3 = fsql.DbFirst.GetTableByName("notexists_tb"); Assert.Null(t3); + + var t4 = fsql.DbFirst.GetTableByName("V_DTOS_DT"); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs index d366322c..6a01369e 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerAdo/SqlServerAdoTest.cs @@ -1,5 +1,6 @@ using FreeSql.DataAnnotations; using FreeSql.Tests.DataContext.SqlServer; +using Microsoft.Data.SqlClient; using NetTaste; using System; using System.Collections.Generic; @@ -47,7 +48,14 @@ namespace FreeSql.Tests.SqlServer [Fact] public void ExecuteNonQuery() { - + var ps = new[] + { + new SqlParameter("@TableName", "tb1"), + new SqlParameter("@FInterID", System.Data.SqlDbType.Int) + }; + ps[1].Direction = System.Data.ParameterDirection.Output; + g.sqlserver.Ado.ExecuteNonQuery(System.Data.CommandType.StoredProcedure, "dbo.GetICMaxNum", ps); + Assert.Equal(100, ps[1].Value); } [Fact] public void ExecuteScalar() diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs index c9f477cb..e07f4437 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs @@ -216,14 +216,27 @@ namespace FreeSql.Odbc.Oracle var databaseIn = string.Join(",", database.Select(a => _commonUtils.FormatSql("{0}", a))); var sql = $@" select -a.owner || '.' || a.table_name, +a.owner || '.' || a.table_name AS tbname, a.owner, a.table_name, b.comments, -'TABLE' +'TABLE' AS tp from all_tables a left join all_tab_comments b on b.owner = a.owner and b.table_name = a.table_name and b.table_type = 'TABLE' -where {(ignoreCase ? "lower(a.owner)" : "a.owner")} in ({databaseIn}){(tbname == null ? "" : $" and {(ignoreCase ? "lower(a.table_name)" : "a.table_name")}={_commonUtils.FormatSql("{0}", tbname[1])}")}"; +where {(ignoreCase ? "lower(a.owner)" : "a.owner")} in ({databaseIn}){(tbname == null ? "" : $" and {(ignoreCase ? "lower(a.table_name)" : "a.table_name")}={_commonUtils.FormatSql("{0}", tbname[1])}")} + +UNION ALL + +select +a.owner || '.' || a.view_name, +a.owner, +a.view_name, +b.comments, +'VIEW' AS tp +from all_views a +left join all_tab_comments b on b.owner = a.owner and b.table_name = a.view_name and b.table_type = 'VIEW' +where {(ignoreCase ? "lower(a.owner)" : "a.owner")} in ({databaseIn}){(tbname == null ? "" : $" and {(ignoreCase ? "lower(a.view_name)" : "a.view_name")}={_commonUtils.FormatSql("{0}", tbname[1])}")} +"; var ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1; diff --git a/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs b/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs index 2231f27a..fc249b8d 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs @@ -216,14 +216,27 @@ namespace FreeSql.Oracle var databaseIn = string.Join(",", database.Select(a => _commonUtils.FormatSql("{0}", a))); var sql = $@" select -a.owner || '.' || a.table_name, +a.owner || '.' || a.table_name AS tbname, a.owner, a.table_name, b.comments, -'TABLE' +'TABLE' AS tp from all_tables a left join all_tab_comments b on b.owner = a.owner and b.table_name = a.table_name and b.table_type = 'TABLE' -where {(ignoreCase ? "lower(a.owner)" : "a.owner")} in ({databaseIn}){(tbname == null ? "" : $" and {(ignoreCase ? "lower(a.table_name)" : "a.table_name")}={_commonUtils.FormatSql("{0}", tbname[1])}")}"; +where {(ignoreCase ? "lower(a.owner)" : "a.owner")} in ({databaseIn}){(tbname == null ? "" : $" and {(ignoreCase ? "lower(a.table_name)" : "a.table_name")}={_commonUtils.FormatSql("{0}", tbname[1])}")} + +UNION ALL + +select +a.owner || '.' || a.view_name, +a.owner, +a.view_name, +b.comments, +'VIEW' AS tp +from all_views a +left join all_tab_comments b on b.owner = a.owner and b.table_name = a.view_name and b.table_type = 'VIEW' +where {(ignoreCase ? "lower(a.owner)" : "a.owner")} in ({databaseIn}){(tbname == null ? "" : $" and {(ignoreCase ? "lower(a.view_name)" : "a.view_name")}={_commonUtils.FormatSql("{0}", tbname[1])}")} +"; var ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1;