[FIXED] Entity Framework 6 – Machen Sie Wertschöpfungseigenschaften optional in großen Mengen, ohne sie in der Domäne nullbar zu machen (Code zuerst)

Ausgabe

Also übertrage ich Domänenklassen ( viele ) mit EF6 auf Postgres . Klassen können Werttypeigenschaften wie int und float haben und werden als NOT NULL.

Ich kann die Eigenschaften meiner Domänenklassen nicht nullfähig machen, da dies die Geschäftslogik beeinträchtigen könnte.

Ich habe diesen Ansatz gesehen – Requisiten optional machen

aber das bedeutet, dass ich dies OnModelCreatingin meinem dbcontextfür jede Klasse, die ich habe, manuell tun muss, richtig?

Gibt es also eine Möglichkeit, Werttypen (für alle meine Domänenklassen) in der Datenbank nullfähig zu machen, z. B. bei der anfänglichen Migration (oder auf andere Weise in großen Mengen) – damit ich sie nicht OnModelCreatingfür jede Klasse, die ich habe, manuell angeben muss? Vielleicht ist es mit einer benutzerdefinierten Konvention dafür möglich?

tldr – Ich möchte jede Eigenschaft des Werttyps jeder Klasse in der Datenbank mit ef6 nullfähig machen, ohne sie in der Domäne selbst nullfähig zu machen

Vielen Dank!

Lösung

Es gibt eine DbModelBuilder.Properties()- Methode.

Damit können die notwendigen Werte für alle Eigenschaften in der OnModelCreatingMethode eingestellt werden.

modelBuilder.Properties().Configure(p => p.IsOptional());

Dadurch ändern sich jedoch alle Eigenschaften. Natürlich müssen die Primärschlüssel und einige andere Spalten nicht geändert werden. Daher müssen sie herausgefiltert werden.

modelBuilder.Properties().Where(p => p.Name != "Id").Configure(p => p.IsOptional());

Oder sowas ähnliches:

modelBuilder.Properties().Where(p => p.Name.EndsWith("Id")).Configure(p => p.IsOptional());


Beantwortet von –
Alexander Petrov


Antwort geprüft von –
Candace Johnson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like