none
Vererbung und Entity Framework (Core 2.1) RRS feed

  • Frage

  • Hallo,

    die Klasse PersonalHardware erbt von der Klasse Aenderung:

    namespace IMS.Data
    {
        public class Aenderung
        {
            [DataType(DataType.MultilineText)]
            [StringLength(2000)]
            [Display(Name = "Änderungsanlass")]
            public string Aenderungsanlass;

            [DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
            [Display(Name = "Änderungsdatum")]
            public DateTime Aenderungsdatum;

            [Display(Name = "Änderungsart")]
            public Guid AenderungsartId;
            public Aenderungsart Aenderungsart { get; set; } // Referenz zur Aenderungsart

            [Display(Name = "Änderung durch")]
            public Guid PersonalId;
            [ForeignKey("Aenderungspersonal")]
            public Personal Personal { get; set; } // Referenz zum Personal

            [Display(Name = "Änderungsadresse")]
            [StringLength(50)]
            public string Aenderungsadresse;
        }
    }

    namespace IMS.Data
    {
        public class PersonalHardware : Aenderung
        {
            public Guid Id { get; set; }

            [Display(Name = "Personal")]
            public Guid PersonalId { get; set; }

            [Display(Name = "Hardware")]
            public Guid HardwareId { get; set; }

            [DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
            public DateTime Zuordnungsbeginn { get; set; }

            [DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
            public DateTime? Zuordnungsende { get; set; }

            [Display(Name = "Gültigkeitsbeginn")]
            [DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
            public DateTime ObjektGueltigAb;

            [Display(Name = "Gültigkeitsende")]
            [DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
            public DateTime? ObjektGueltigBis;
        }
    }

    Verwende ich migrations wird mir bei ASP.NET Core 2.1 und EF Core 2.1.1 folgendes erzeugt:

                migrationBuilder.CreateTable(
                    name: "PersonalHardwares",
                    columns: table => new
                    {
                        AenderungsartId1 = table.Column<Guid>(nullable: true),
                        Aenderungspersonal = table.Column<Guid>(nullable: false),
                        Id = table.Column<Guid>(nullable: false),
                        PersonalId = table.Column<Guid>(nullable: false),
                        HardwareId = table.Column<Guid>(nullable: false),
                        Zuordnungsbeginn = table.Column<DateTime>(nullable: false),
                        Zuordnungsende = table.Column<DateTime>(nullable: true)
                    },
                    constraints: table =>
                    {
                        table.PrimaryKey("PK_PersonalHardwares", x => x.Id);
                        table.ForeignKey(
                            name: "FK_PersonalHardwares_Aenderungsarten_AenderungsartId1",
                            column: x => x.AenderungsartId1,
                            principalTable: "Aenderungsarten",
                            principalColumn: "Id",
                            onDelete: ReferentialAction.Restrict);
                        table.ForeignKey(
                            name: "FK_PersonalHardwares_Personals_Aenderungspersonal",
                            column: x => x.Aenderungspersonal,
                            principalTable: "Personals",
                            principalColumn: "Id",
                            onDelete: ReferentialAction.Cascade);
                    });

    Es werden also aus der Klasse Aenderung nur
    - Aenderungsart und
    - Aenderungspersonal,

    nicht aber
    - Aenderungsanlass
    - Aenderungsdatum und
    - Aenderungsadresse

    übernommen.

    Was mache ich falsch?

    Vielen Dank

    KonfiDa

    Montag, 3. September 2018 07:04

Antworten

  • Hallo,

    habe von Jan den Tipp bekommen, die nicht übernommenen Felder mit Getter und Setter zu deklarieren - und schon klappt es :-)

    Danke

    KonFiDa

    • Als Antwort markiert KonFiDa Montag, 3. September 2018 10:33
    Montag, 3. September 2018 10:33