From 804d15f21d4f56d1fe022d5659f82a165dd6af12 Mon Sep 17 00:00:00 2001 From: WeihanLi Date: Wed, 8 Jan 2020 16:15:15 +0800 Subject: [PATCH 1/3] add IsRelational extension for DatabaseFacade --- .../RelationalDatabaseFacadeExtensions.cs | 13 +++++++++++++ .../RelationalDatabaseFacadeExtensionsTest.cs | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs b/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs index 8609eb690d6..3fbda138bfc 100644 --- a/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs +++ b/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs @@ -604,6 +604,19 @@ public static void SetCommandTimeout([NotNull] this DatabaseFacade databaseFacad public static string GenerateCreateScript([NotNull] this DatabaseFacade databaseFacade) => databaseFacade.GetRelationalService().GenerateCreateScript(); + /// + /// + /// Returns true if the database provider currently in use is a relational database. + /// + /// + /// The facade from . + /// True if a relational database provider is being used; false otherwise. + public static bool IsRelational([NotNull] this DatabaseFacade databaseFacade) + { + var dependencies = ((IDatabaseFacadeDependenciesAccessor)databaseFacade).Dependencies; + return dependencies is IRelationalDatabaseFacadeDependencies; + } + private static IRelationalDatabaseFacadeDependencies GetFacadeDependencies(DatabaseFacade databaseFacade) { var dependencies = ((IDatabaseFacadeDependenciesAccessor)databaseFacade).Dependencies; diff --git a/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs b/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs index 09571440bc3..38b133a741c 100644 --- a/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs +++ b/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs @@ -23,6 +23,15 @@ namespace Microsoft.EntityFrameworkCore { public class RelationalDatabaseFacadeExtensionsTest { + [ConditionalFact] + public void IsRelational_returns_if_relational() + { + var dbConnection = new FakeDbConnection("A=B"); + var context = RelationalTestHelpers.Instance.CreateContext(); + Assert.True(context.Database.IsRelational()); + } + + [ConditionalFact] public void GetDbConnection_returns_the_current_connection() { From e21e3f91016a5c8d25104a2ade288602bd25d386 Mon Sep 17 00:00:00 2001 From: weihanli Date: Thu, 9 Jan 2020 02:11:50 +0800 Subject: [PATCH 2/3] optimize IsRelational extension, add Check.NotNull --- .../Extensions/RelationalDatabaseFacadeExtensions.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs b/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs index 3fbda138bfc..b22a06cb603 100644 --- a/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs +++ b/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs @@ -612,10 +612,7 @@ public static string GenerateCreateScript([NotNull] this DatabaseFacade database /// The facade from . /// True if a relational database provider is being used; false otherwise. public static bool IsRelational([NotNull] this DatabaseFacade databaseFacade) - { - var dependencies = ((IDatabaseFacadeDependenciesAccessor)databaseFacade).Dependencies; - return dependencies is IRelationalDatabaseFacadeDependencies; - } + => ((IDatabaseFacadeDependenciesAccessor)Check.NotNull(databaseFacade, nameof(databaseFacade))).Dependencies is IRelationalDatabaseFacadeDependencies; private static IRelationalDatabaseFacadeDependencies GetFacadeDependencies(DatabaseFacade databaseFacade) { From 5ef6b3cb07873cb78cdf182fc3b1deee684cd66a Mon Sep 17 00:00:00 2001 From: WeihanLi Date: Thu, 9 Jan 2020 10:15:33 +0800 Subject: [PATCH 3/3] add InMemory test --- .../RelationalDatabaseFacadeExtensionsTest.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs b/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs index 38b133a741c..8c6d05b7863 100644 --- a/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs +++ b/test/EFCore.Relational.Tests/RelationalDatabaseFacadeExtensionsTest.cs @@ -24,13 +24,19 @@ namespace Microsoft.EntityFrameworkCore public class RelationalDatabaseFacadeExtensionsTest { [ConditionalFact] - public void IsRelational_returns_if_relational() + public void Return_true_if_relational() { - var dbConnection = new FakeDbConnection("A=B"); - var context = RelationalTestHelpers.Instance.CreateContext(); + using var context = RelationalTestHelpers.Instance.CreateContext(); Assert.True(context.Database.IsRelational()); } + [ConditionalFact] + public void Return_false_if_inMemory() + { + using var context = InMemoryTestHelpers.Instance.CreateContext(); + Assert.False(context.Database.IsRelational()); + } + [ConditionalFact] public void GetDbConnection_returns_the_current_connection()