sql >> Database teknologi >  >> RDS >> Mysql

EF Core konfigurationsproblem med ejet type brugt i 2 forskellige klasser

Opdatering (EF Core 3.x):

Stadig ingen offentlig måde at få EntityTypeBuilder på , men i det mindste er konstruktørargumentet blevet ændret til at være IMutableEntityType type, så kun

using Microsoft.EntityFrameworkCore.Metadata.Builders;

er nødvendig, og den tilsvarende kode er nu

var entityTypeBuilder = new EntityTypeBuilder(entityType);

Original (EF Core 2.x):

Problemet er, at ClrType er ikke nok til at identificere den ejede enhedstype, derfor modelBuilder.Entity(Type) kan ikke bruges til at hente EntityTypeBuilder forekomst nødvendig for flydende konfiguration af enhedsegenskaberne.

Det ser ud til, at der ikke er nogen god offentlig måde at gøre det på i EF Core 2.x, så alt jeg kan foreslå er at bruge nogle af EF Core internal (heldigvis offentligt tilgængelig under den typiske advarsel om intern brug).

Du skal bruge følgende using s:

using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Internal;

Den første er til EntityTypeBuilder klasse, den anden er for AsEntityType() udvidelsesmetode, som giver dig adgang til den interne klasse, der implementerer IEntityType , og især Builder ejendom.

Den ændrede kode ser således ud:

var entityTypes = modelBuilder.Model.GetEntityTypes()
    .ToList();

foreach (var entityType in entityTypes)
{
    var properties = entityType
        .GetProperties()
        .ToList();

    // (1)
    var entityTypeBuilder = new EntityTypeBuilder(entityType.AsEntityType().Builder);

    foreach (var property in properties)
    {
        if (property.PropertyInfo == null)
        {
            continue;
        }

        if (property.PropertyInfo.PropertyType.IsBoolean())
        {
            entityTypeBuilder // (2)
            .Property(property.Name)
            .HasConversion(new BoolToZeroOneConverter<short>())
            .HasColumnType("tinyint(1)");
        }
    }
}



  1. Socketfil /var/pgsql_socket/.s.PGSQL.5432 mangler i Mountain Lion (OS X Server)

  2. PHP/MySQL 2 'while'-sætninger fra 1 mysql-forespørgsel?

  3. Kan jeg bruge pt-online-schema-change til at ændre en primær nøgle?

  4. Sådan forbinder du Amazon RDS i iOS