Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Discriminated Unions for Static Data

Offen
#392 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
fsharp, sql
Bereich
databases

Rechercherichtung

Das Issue nennt keine Dateien oder Tests; beginne damit, das vorhandene Individuals-Feature und die davon abhängigen query/type-provider-Pfade zu lesen. Vergleiche diese Einstiegspunkte mit der hier gezeigten manuellen ContentTypeId-Projektion; fertig ist die Aufgabe, wenn discriminated-union foreign-key IDs direkt ohne dieses Mapping verwendet werden können.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

enhancement

Another question, but are there any plans for allowing discriminated unions to be used as the type for foreign key IDs to static data? I know entity framework supports this with enums but it would be handy to be able to use discriminated unions for obvious reasons:

type ContentTypeId =
  | Book
  | Magazine
  | Newspaper

...

let printData item =
  match item.ContentTypeId with
  | Book -> printfn "Found a book with id: %d" item.Id
  | Magazine -> printfn "Found a magazine with id: %d" item.Id
  | Newspaper -> printfn "Found a newspaper with id: %d" item.Id

It's possible to do this now by mapping the ID when projecting results:

let getContentTypeId = function
  | 1 -> Book
  | 2 -> Magazine
  | 3 -> Newpaper

...

query {
  for item in ctx.Dbo.Media do
  select
    { contentTypeId = getContentTypeId item.contentTypeId;
    }
}

This can get tedious and is pretty brittle, and an auto-generated solution would be preferable if possible. The infrastructure for the Individuals feature would probably be reusable to accomplish this?

Vorherrschende Sprache
F#
Sterne
627
Forks
147
Ø Merge
2 Std. 2 Min.
Gemergte PRs (30 T.)
1

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus fsprojects/SQLProvider

Alle Issues in fsprojects/SQLProvider

Ähnliche Issues

Weitere Issues zu Databases

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.