Skip to content

Commit b065aa3

Browse files
committed
Documentation updates.
1 parent c9755ec commit b065aa3

4 files changed

Lines changed: 44 additions & 11 deletions

File tree

CONTRIBUTING.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Contribution to SQL Server Simulator
2+
3+
## Bugs & Feature Requests
4+
5+
- Issues for bugs and feature requests are welcome, but please check for an existing issue first.
6+
- Include an example of the desired outcome.
7+
8+
## Contributing Code
9+
10+
- You must be the legal owner of your code and you must be willing to surrender it to this project's license.
11+
- Code additions and changes should be the _absolute minimum required_ to achieve your goal.
12+
- Formatting or style changes may only be combined with bug fixes or new features, and can only reformat the modified area.
13+
- Introducing a new 3rd party dependency is not permitted.
14+
15+
If you make a PR that is rejected for any reason, but still has useful qualities, those changes might be extracted and integrated anyway.
16+
To avoid this and ensure repository history associates your contributions to _you_, make sure your PR is in an acceptable state so it can be directly merged as-is.

Example/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ sealed class ExampleRecord
3535
public required int Id { get; set; }
3636
}
3737

38-
// Below is the minimum require to get entity framework to use the simulation.
38+
// Below is the minimum required to get entity framework to use the simulation.
3939
sealed class SimulatedContext(Simulation simulation) : DbContext
4040
{
4141
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
@@ -45,4 +45,4 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
4545
}
4646

4747
public DbSet<ExampleRecord> ExampleRecord => Set<ExampleRecord>();
48-
}
48+
}

README.md

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SQL Server Simulator for .NET
22

3-
Provides in-memory SQL Server emulation, intended for high performance parallel unit testing of .NET applications.
3+
Provides embedded SQL Server emulation, intended for high performance parallel unit testing of .NET applications.
44

55
# Example
66

@@ -42,7 +42,7 @@ sealed class ExampleRecord
4242
public required int Id { get; set; }
4343
}
4444

45-
// Below is the minimum require to get entity framework to use the simulation.
45+
// Below is the minimum required to get entity framework to use the simulation.
4646
sealed class SimulatedContext(Simulation simulation) : DbContext
4747
{
4848
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
@@ -55,11 +55,27 @@ sealed class SimulatedContext(Simulation simulation) : DbContext
5555
}
5656
```
5757

58-
## Capabilities
58+
## Limitations
5959

60-
* Not much yet; working toward supporting the basic functionality of Entity Framework Core.
60+
The feature set of this library is currently too small for use in real-world applications.
6161

62-
## Limitations
62+
- Feature parity with SQL Server is less than 1%.
63+
- No thread-safety or lock emulation.
64+
- Syntax validation is prone to both false positives _and_ negatives due to limited feature support.
65+
66+
## Development Priorities
67+
68+
- The highest priority is improving SQL command processing enough to support all Entity Framework features, enabling the real-world use case of fast single-threaded unit testing of an Entity Framework-based app without requiring a SQL Server deployment.
69+
70+
The remaining priorities are so far below the EF compatibility goal that they won't be seriously started until it's done.
71+
This project only has one main developer and that developer's time and motivation are limited, so an ETA is impossible.
6372

64-
* Doesn't support most SQL Server features, probably won't work for you in its current state. Feature parity is an ongoing challenge.
65-
* Limited ability to check invalid syntax, since it generally assumes the source query is doing something not yet supported if it runs into trouble parsing.
73+
- Thread-safe concurrency on a single simulation, enabling parallel unit testing.
74+
- Realistic lock emulation, enabling deadlock testing.
75+
- Unreliable connection simulation, to enable testing of application-side recovery/retry mechanisms.
76+
- Support commonly-used non-Entity Framework features.
77+
- Usage metrics, enabling test validation of proper techniques, such as avoiding looped queries or excessive parameter counts.
78+
- Physical storage of data, enabling larger-than-RAM databases and faster initialization.
79+
- Network protocol emulation, enabling applications to connect to the simulator as if it were a real SQL Server.
80+
- This almost certainly would be a separate library as it introduces a variety of new network and cryptography dependencies compared to the core engine which has no dependencies outside of .NET itself.
81+
- Following this would be work to enable compatibility with tools like SQL Server Management Studio.

SqlServerSimulator.sln

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 17
4-
VisualStudioVersion = 17.1.31911.260
3+
# Visual Studio Version 18
4+
VisualStudioVersion = 18.3.11218.70 d18.3
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlServerSimulator", "SqlServerSimulator\SqlServerSimulator.csproj", "{CF5684B4-08DF-4CD3-8342-5B627155B40A}"
77
EndProject
@@ -10,6 +10,7 @@ EndProject
1010
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{527F1E6C-BCEE-442F-96C4-B0ED5E47B5EE}"
1111
ProjectSection(SolutionItems) = preProject
1212
.editorconfig = .editorconfig
13+
CONTRIBUTING.md = CONTRIBUTING.md
1314
.github\workflows\dotnetcore.yml = .github\workflows\dotnetcore.yml
1415
README.md = README.md
1516
EndProjectSection

0 commit comments

Comments
 (0)