- “Dotnet” (ecosystem) vs. “.NET” (driver) vs. “.Net” (name of binding) vs. “dotnet” (value types)
- Link “Other bindings” to
/docs/clients/index - Style guide?
- Do we have one? Should we have one?
- behavior vs. behaviour?
… developer experience as our highest priorities - EdgeDB.Net achieves by using a fully asynchronous …
- Should be em dash
EdgeDB.Net targets .NET 6. Versions below may not work or bring unexpected behavior.
- “With earlier versions of .NET, the driver may not work as expected or at all.”
In order to use our EdgeDB.Net driver, you will need EdgeDB. For the intent of this demonstration, you can follow through our Quickstart guide for the full process on installing and creating a new project.
- “For the intent of this demonstration…” → Follow our Quickstart guide for help installing EdgeDB and creating a new project.
Make sure that you create the project in your
.slndirectory, this is so EdgeDB.Net can automatically find and use the project.
- Split into two complete sentences
Once you setup EdgeDB, install the new driver with
dotnetin your command terminal:
- “setup” → “set up”
- “EdgeDBClient” should be relative link
This class acts as an in-between for your code and EdgeDB.
- “in-between” sounds awkward. “Connective layer” maybe?
Queries exist with different cardinalities, depending on how you make your query, you may find yourself needing different return results.
- Split into two sentences at “cardinalities. Depending”
depending on how you make your query, you may find yourself needing different return results.
- Make this more concrete. What do you mean? Is this just about cardinality or about something else as well?
- Explain “cardinalities”
- “Queries exist with different cardinalities (i.e., the expected number of results — at least one, at most one, or many).”
EdgeDB.Net uses the common dotnet value types to represent different scalar types in edgedb.
- edgedb → EdgeDB
EdgeDB.Net supports strong-typed results
- strong-typed → strongly-typed
Let’s use the classic “Movies” schema which can be found here.
- Drop “which can be found here” and link
"Movies" schema
Let’s first create the dotnet types which will represent the types defined in the schema, one of the huge features the dotnet driver offers is reflected polymorphism between your code and EdgeDB.
- Split sentences at “in the schema. One of the huge features…”
Abstract types defined in your schema can be models by abstract types in dotnet, you can then pass this abstract type as a query result and the driver will automaticallly deserialize the correct inheriting type.
- Should “can be models by” be “can be modeled by”?
- Split sentence at “abstract types in dotnet. You can then pass…”
- too many Ls in “automatically”
This demo uses a naming strategy to use PascalCase in dotnet types, this behavior is opt-in. To learn more about naming strategies and how to enable it have a look at the Naming Strategy docs
- “This demo uses a PascalCase naming strategy in dotnet types. This strategy is optional. To learn more about naming strategies and how to enable implicit conversion to your chosen strategy, refer to…”
- End with a period
EdgeDB.Net will deserialize the query result as a
MovieorShowdepending on the typename of the result, finally boxing the type toContentallowing full polymorphism all the way down.
- Needs rework
- “EdgeDB.Net will deserialize the query result as a
MovieorShowdepending on the typename of the result. Querying with theContentabstract type allows for full polymorphism all the way down.” - ⭐ “By querying with the
Contentabstract type, EdgeDB.Net will return everyContentobject, whether it’s aMovieor aShow. Objects will be individually deserialized as one or the other depending on their typename.”
EdgeDB.Net supports transactions out of the box, retrying your query(s) if a retryable error (ex: network failure) is thrown.
- query(s) → queries
- retryable → retry-able
- (ex: network failure) → (e.g., network failure)
Code blocks in transactions may run multiple times, it’s good practice to only perform database-related operation in transactions.
- Split sentences: “multiple times. It’s good practice…”
This is incredibly useful in tandem with Globals and Access Policies. Let’s use the demo on the access policy docs as an example:
- These links don’t work for me.
So whats next for EdgeDB.Net?
- So, what’s next for EdgeDB.Net?
We’re currently working on a query builder to provide an EFCore-like feel without that hastle of an ORM.
- hastle → hassle
- that hassle → the hassle
- Should “hassle” be “drawbacks?”
The query builder is very early access and contains a lot of bugs, so beware!
- “is very early and…” or “is a very early release and…”