Skip to content
This repository has been archived by the owner on Aug 1, 2022. It is now read-only.

feat(EntityFramework): EntityFramework adds soft delete #30

Merged
merged 28 commits into from
Mar 21, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
969d23d
feat(EntityFrameworkCore): Adjust MasaDbContextOptions, DbContext, Op…
zhenlei520 Mar 14, 2022
36e2fb6
Merge branch 'main' of https://github.com/masastack/MASA.Utils into f…
zhenlei520 Mar 14, 2022
f0198b2
Merge branch 'main' of https://github.com/masastack/MASA.Utils into f…
zhenlei520 Mar 14, 2022
4b84a8e
feat(Expression): Extend And and Or methods
zhenlei520 Mar 17, 2022
3b7cc4f
refactor(EntityFrameworkCode): refactor EntityFramework
zhenlei520 Mar 17, 2022
3356e3b
Merge branch 'main' of https://github.com/masastack/MASA.Utils into f…
zhenlei520 Mar 17, 2022
37354a3
perf(Expressions): Extend And Or methods
zhenlei520 Mar 17, 2022
693ae99
refactor(EntityFrameworkCore): Refactor MasaDbContext and add global …
zhenlei520 Mar 17, 2022
494f472
chore(EntityFrameworkCore): Change parameter names
zhenlei520 Mar 17, 2022
743d5d2
docs(EntityFrameworkCore): add EntityFrameworkCore doc
zhenlei520 Mar 17, 2022
84ca857
chore(EntityFramework.SqlServer): change file encoding
zhenlei520 Mar 17, 2022
3806f5f
feat(EntityFrameworkCore.InMemory): support EntityFrameworkCore.InMemory
zhenlei520 Mar 17, 2022
c0a73f5
feat(EntityFrameworkCore.MySql): support EntityFrameworkCore.MySql
zhenlei520 Mar 17, 2022
3e9a23f
feat(EntityFrameworkCore.Oracle): support EntityFrameworkCore.Oracle
zhenlei520 Mar 17, 2022
4bb6845
feat(EntityFrameworkCore.PostgreSql): support EntityFrameworkCore.Pos…
zhenlei520 Mar 17, 2022
b94bc1b
feat(EntityFrameworkCore.Sqlite): support EntityFrameworkCore.Sqlite
zhenlei520 Mar 17, 2022
4b331d1
chore(EntityFrameworkCore.MySql): change parameter name
zhenlei520 Mar 17, 2022
455253e
feat(EntityFrameworkCore.Pomelo.MySql): support mysql by Pomelo.Entit…
zhenlei520 Mar 17, 2022
c410949
chore(caller.test): change file encoding
zhenlei520 Mar 17, 2022
3515533
feat(EntityFrameworkCore.Cosmos): support EntityFrameworkCore.Cosmos
zhenlei520 Mar 17, 2022
1ad3dca
docs(EntityFrameworkCore): Improve EntityFramework documentation
zhenlei520 Mar 17, 2022
538c095
Merge branch 'main' of https://github.com/masastack/MASA.Utils into f…
zhenlei520 Mar 18, 2022
2e6231f
Merge branch 'main' of https://github.com/masastack/MASA.Utils into f…
zhenlei520 Mar 18, 2022
2226526
fix(EntityFrameworkCore): Fix MasaDbContext soft delete issue and cir…
zhenlei520 Mar 18, 2022
da209ff
test(EntityFrameworkCore): Add EntityFrameworkCore UnitTest
zhenlei520 Mar 18, 2022
b754373
test(EntityFramework): Improve EntityFramework unit tests
zhenlei520 Mar 18, 2022
73b91da
chore: Modify Masa.Utils.Data.EntityFrameworkCore.Cosmos English docu…
zhenlei520 Mar 18, 2022
82489e9
chore(EntityFrameworkCore): change parameter name
zhenlei520 Mar 18, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions Masa.Utils.sln
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,24 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Utils.Caller.Integrate
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Utils.Caller.Tests", "test\Masa.Utils.Caller.Tests\Masa.Utils.Caller.Tests.csproj", "{276B4CDC-BD8F-4563-A82A-B46724C9F4B0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Utils.Data.EntityFrameworkCore.SqlServer", "src\Data\Masa.Utils.Data.EntityFrameworkCore.SqlServer\Masa.Utils.Data.EntityFrameworkCore.SqlServer.csproj", "{9004B687-3EB7-4156-A3F7-078A342F2BEF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Utils.Data.EntityFrameworkCore.Sqlite", "src\Data\Masa.Utils.Data.EntityFrameworkCore.Sqlite\Masa.Utils.Data.EntityFrameworkCore.Sqlite.csproj", "{4C3C99D6-A832-4D14-B1C8-54B6E0780F24}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Utils.Data.EntityFrameworkCore.MySql", "src\Data\Masa.Utils.Data.EntityFrameworkCore.MySql\Masa.Utils.Data.EntityFrameworkCore.MySql.csproj", "{8AE29CEB-89D3-4AE3-8F97-D03D19F0B6FB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Utils.Data.EntityFrameworkCore.InMemory", "src\Data\Masa.Utils.Data.EntityFrameworkCore.InMemory\Masa.Utils.Data.EntityFrameworkCore.InMemory.csproj", "{95A1CAC2-42F5-4916-99D2-64D9C830B1B3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Utils.Data.EntityFrameworkCore.Oracle", "src\Data\Masa.Utils.Data.EntityFrameworkCore.Oracle\Masa.Utils.Data.EntityFrameworkCore.Oracle.csproj", "{6FFA2D43-D011-4E1B-B2DA-A6DF2816AA02}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Utils.Data.EntityFrameworkCore.PostgreSql", "src\Data\Masa.Utils.Data.EntityFrameworkCore.PostgreSql\Masa.Utils.Data.EntityFrameworkCore.PostgreSql.csproj", "{D682F08B-6586-4C33-815D-8F98C50A0843}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Utils.Data.EntityFrameworkCore.Pomelo.MySql", "src\Data\Masa.Utils.Data.EntityFrameworkCore.Pomelo.MySql\Masa.Utils.Data.EntityFrameworkCore.Pomelo.MySql.csproj", "{2AB5DFD8-B537-4066-8366-E3F371BD5EE2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Utils.Data.EntityFrameworkCore.Cosmos", "src\Data\Masa.Utils.Data.EntityFrameworkCore.Cosmos\Masa.Utils.Data.EntityFrameworkCore.Cosmos.csproj", "{B8CB480B-2608-46A8-8528-37EDD5E1EC1E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Utils.Data.EntityFrameworkCore.Tests", "test\Masa.Utils.Data.EntityFrameworkCore.Tests\Masa.Utils.Data.EntityFrameworkCore.Tests.csproj", "{41C2A208-4DF8-4BD0-B844-77E6F58FE000}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -203,6 +221,42 @@ Global
{276B4CDC-BD8F-4563-A82A-B46724C9F4B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{276B4CDC-BD8F-4563-A82A-B46724C9F4B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{276B4CDC-BD8F-4563-A82A-B46724C9F4B0}.Release|Any CPU.Build.0 = Release|Any CPU
{9004B687-3EB7-4156-A3F7-078A342F2BEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9004B687-3EB7-4156-A3F7-078A342F2BEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9004B687-3EB7-4156-A3F7-078A342F2BEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9004B687-3EB7-4156-A3F7-078A342F2BEF}.Release|Any CPU.Build.0 = Release|Any CPU
{4C3C99D6-A832-4D14-B1C8-54B6E0780F24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C3C99D6-A832-4D14-B1C8-54B6E0780F24}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4C3C99D6-A832-4D14-B1C8-54B6E0780F24}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C3C99D6-A832-4D14-B1C8-54B6E0780F24}.Release|Any CPU.Build.0 = Release|Any CPU
{8AE29CEB-89D3-4AE3-8F97-D03D19F0B6FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8AE29CEB-89D3-4AE3-8F97-D03D19F0B6FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8AE29CEB-89D3-4AE3-8F97-D03D19F0B6FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8AE29CEB-89D3-4AE3-8F97-D03D19F0B6FB}.Release|Any CPU.Build.0 = Release|Any CPU
{95A1CAC2-42F5-4916-99D2-64D9C830B1B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95A1CAC2-42F5-4916-99D2-64D9C830B1B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95A1CAC2-42F5-4916-99D2-64D9C830B1B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95A1CAC2-42F5-4916-99D2-64D9C830B1B3}.Release|Any CPU.Build.0 = Release|Any CPU
{6FFA2D43-D011-4E1B-B2DA-A6DF2816AA02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6FFA2D43-D011-4E1B-B2DA-A6DF2816AA02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6FFA2D43-D011-4E1B-B2DA-A6DF2816AA02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6FFA2D43-D011-4E1B-B2DA-A6DF2816AA02}.Release|Any CPU.Build.0 = Release|Any CPU
{D682F08B-6586-4C33-815D-8F98C50A0843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D682F08B-6586-4C33-815D-8F98C50A0843}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D682F08B-6586-4C33-815D-8F98C50A0843}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D682F08B-6586-4C33-815D-8F98C50A0843}.Release|Any CPU.Build.0 = Release|Any CPU
{2AB5DFD8-B537-4066-8366-E3F371BD5EE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2AB5DFD8-B537-4066-8366-E3F371BD5EE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2AB5DFD8-B537-4066-8366-E3F371BD5EE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2AB5DFD8-B537-4066-8366-E3F371BD5EE2}.Release|Any CPU.Build.0 = Release|Any CPU
{B8CB480B-2608-46A8-8528-37EDD5E1EC1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8CB480B-2608-46A8-8528-37EDD5E1EC1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8CB480B-2608-46A8-8528-37EDD5E1EC1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8CB480B-2608-46A8-8528-37EDD5E1EC1E}.Release|Any CPU.Build.0 = Release|Any CPU
{41C2A208-4DF8-4BD0-B844-77E6F58FE000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41C2A208-4DF8-4BD0-B844-77E6F58FE000}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41C2A208-4DF8-4BD0-B844-77E6F58FE000}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41C2A208-4DF8-4BD0-B844-77E6F58FE000}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -243,7 +297,16 @@ Global
{1A8FBE3D-B004-4D25-8FE0-A3632A0FDE9E} = {4F908878-0EB8-43E4-96E4-8B1F32E9B635}
{4B351F95-5919-46A9-A02F-F4409C9EA79A} = {4F908878-0EB8-43E4-96E4-8B1F32E9B635}
{D5E09920-081B-478C-B77B-EAB77931F47D} = {4F908878-0EB8-43E4-96E4-8B1F32E9B635}
{9004B687-3EB7-4156-A3F7-078A342F2BEF} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{276B4CDC-BD8F-4563-A82A-B46724C9F4B0} = {4F908878-0EB8-43E4-96E4-8B1F32E9B635}
{4C3C99D6-A832-4D14-B1C8-54B6E0780F24} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{8AE29CEB-89D3-4AE3-8F97-D03D19F0B6FB} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{95A1CAC2-42F5-4916-99D2-64D9C830B1B3} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{6FFA2D43-D011-4E1B-B2DA-A6DF2816AA02} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{D682F08B-6586-4C33-815D-8F98C50A0843} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{2AB5DFD8-B537-4066-8366-E3F371BD5EE2} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{B8CB480B-2608-46A8-8528-37EDD5E1EC1E} = {F844C2A1-C36D-400E-A0D8-7658EF9C3B93}
{41C2A208-4DF8-4BD0-B844-77E6F58FE000} = {4F908878-0EB8-43E4-96E4-8B1F32E9B635}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D7DAA0E6-098F-4B18-8775-64FDA96F1FF0}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
namespace Masa.Utils.Data.EntityFrameworkCore.Cosmos.Internal;

internal static class Parser
{
public static Dictionary<string, string> ToDictionary(this string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
throw new ArgumentException("Cosmos: empty database connection string", nameof(connectionString));

Dictionary<string, string> dictionary = new();
foreach (var item in connectionString.Split(';'))
{
if (string.IsNullOrEmpty(item))
continue;

if (item.Split('=').Length != 2)
throw new ArgumentException("Cosmos: Bad database connection string");

dictionary.Add(item.Split('=')[0], item.Split('=')[1]);
}
return dictionary;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Cosmos" Version="6.0.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Masa.Utils.Data.EntityFrameworkCore\Masa.Utils.Data.EntityFrameworkCore.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
namespace Masa.Utils.Data.EntityFrameworkCore.Cosmos;

public static class MasaDbContextOptionsBuilderExtensions
{
public static MasaDbContextOptionsBuilder UseCosmos(
this MasaDbContextOptionsBuilder builder,
Action<CosmosDbContextOptionsBuilder>? cosmosOptionsAction = null)
{
var connectionStringProvider = builder.ServiceProvider.GetRequiredService<IConnectionStringProvider>();
var configurationDic = connectionStringProvider.GetConnectionString().ToDictionary();

if (!configurationDic.TryGetValue("Database", out string? databaseName))
throw new ArgumentException("Cosmos: Bad database connection string, Failed to get [Database] name");

if (configurationDic.TryGetValue("ConnectionString", out string? connectionString))
return builder.UseCosmos(connectionString, databaseName, cosmosOptionsAction);

if (!configurationDic.TryGetValue("AccountKey", out string? accountKey) ||
!configurationDic.TryGetValue("AccountEndpoint", out string? accountEndpoint))
throw new ArgumentException("Cosmos: Bad database connection string, Failed to get [AccountKey] name or [AccountEndpoint] name");

return builder.UseCosmos(accountEndpoint, accountKey, databaseName, cosmosOptionsAction);
}

public static MasaDbContextOptionsBuilder UseCosmos(
this MasaDbContextOptionsBuilder builder,
string accountEndpoint,
string accountKey,
string databaseName,
Action<CosmosDbContextOptionsBuilder>? cosmosOptionsAction = null)
{
builder.DbContextOptionsBuilder.UseCosmos(accountEndpoint, accountKey, databaseName, cosmosOptionsAction);
return builder;
}

public static MasaDbContextOptionsBuilder UseCosmos(
this MasaDbContextOptionsBuilder builder,
string connectionString,
string databaseName,
Action<CosmosDbContextOptionsBuilder>? cosmosOptionsAction = null)
{
builder.DbContextOptionsBuilder.UseCosmos(connectionString, databaseName, cosmosOptionsAction);
return builder;
}
}
34 changes: 34 additions & 0 deletions src/Data/Masa.Utils.Data.EntityFrameworkCore.Cosmos/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[中](README.zh-CN.md) | EN

## Masa.Utils.Data.EntityFrameworkCore.Cosmos

## Example:

```c#
Install-Package Masa.Utils.Data.EntityFrameworkCore.Cosmos
```

##### Usage 1:

1. Configure appsettings.json

``` appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "AccountKey=AccountKey;AccountEndpoint=AccountEndpoint;Database=Database"// or "ConnectionString=ConnectionString;Database=Database"
}
}
```

2. Using MasaDbContext

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseCosmos());
```

##### Usage 2:

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseCosmos($"{accountEndpoint}",$"{accountKey}",$"{databaseName}"));
//builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseCosmos($"{connectionString}",$"{databaseName}"));
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
中 | [EN](README.md)

## Masa.Utils.Data.EntityFrameworkCore.Cosmos

## 用例:

```c#
Install-Package Masa.Utils.Data.EntityFrameworkCore.Cosmos
```

#### 用法1:

1. 配置appsettings.json

``` appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "AccountKey=AccountKey;AccountEndpoint=AccountEndpoint;Database=Database"//或"ConnectionString=ConnectionString;Database=Database"
}
}
```

2. 使用MasaDbContext

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseCosmos());
```

#### 用法2:

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseCosmos($"{accountEndpoint}",$"{accountKey}",$"{databaseName}"));
//builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseCosmos($"{connectionString}",$"{databaseName}"));
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
global using Masa.Utils.Data.EntityFrameworkCore.Cosmos.Internal;
global using Microsoft.EntityFrameworkCore;
global using Microsoft.EntityFrameworkCore.Infrastructure;
global using Microsoft.Extensions.DependencyInjection;
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Masa.Utils.Data.EntityFrameworkCore\Masa.Utils.Data.EntityFrameworkCore.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace Masa.Utils.Data.EntityFrameworkCore.InMemory;

public static class MasaDbContextOptionsBuilderExtensions
{
public static MasaDbContextOptionsBuilder UseInMemoryDatabase(
this MasaDbContextOptionsBuilder builder,
Action<InMemoryDbContextOptionsBuilder>? inMemoryOptionsAction = null)
{
var connectionStringProvider = builder.ServiceProvider.GetRequiredService<IConnectionStringProvider>();
return builder.UseInMemoryDatabase(connectionStringProvider.GetConnectionString(), inMemoryOptionsAction);
}

public static MasaDbContextOptionsBuilder UseInMemoryDatabase(
this MasaDbContextOptionsBuilder builder,
string databaseName,
Action<InMemoryDbContextOptionsBuilder>? inMemoryOptionsAction = null)
{
builder.DbContextOptionsBuilder.UseInMemoryDatabase(databaseName, inMemoryOptionsAction);
return builder;
}
}
33 changes: 33 additions & 0 deletions src/Data/Masa.Utils.Data.EntityFrameworkCore.InMemory/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[中](README.zh-CN.md) | EN

## Masa.Utils.Data.EntityFrameworkCore.InMemory

## Example:

```c#
Install-Package Masa.Utils.Data.EntityFrameworkCore.InMemory
```

##### Usage 1:

1. Configure appsettings.json

``` appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "identity"
}
}
```

2. Using MasaDbContext

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseInMemoryDatabase());
```

##### Usage 2:

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseInMemoryDatabase("identity"));
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
中 | [EN](README.md)

## Masa.Utils.Data.EntityFrameworkCore.InMemory

## 用例:

```c#
Install-Package Masa.Utils.Data.EntityFrameworkCore.InMemory
```

#### 用法1:

1. 配置appsettings.json

``` appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "identity"
}
}
```

2. 使用MasaDbContext

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseInMemoryDatabase());
```

#### 用法2:

``` C#
builder.Services.AddMasaDbContext<CustomDbContext>(optionsBuilder => optionsBuilder.UseSoftDelete().UseInMemoryDatabase("identity"));
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
global using Microsoft.EntityFrameworkCore;
global using Microsoft.EntityFrameworkCore.Infrastructure;
global using Microsoft.Extensions.DependencyInjection;
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Masa.Utils.Data.EntityFrameworkCore\Masa.Utils.Data.EntityFrameworkCore.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="MySql.EntityFrameworkCore" Version="6.0.0" />
</ItemGroup>

</Project>
Loading