www.IT-Visions.de-Diskussionsforen (Version 2.1)
(Diese Seite wurde noch nicht auf das neue Layout umgestellt!)


Diese Foren stehen den Lesern unserer Bücher und allen anderen registrieren Benutzern dieser Website zur Verfügung. Wir würden uns freuen, wenn viele Nutzer dieser Website hier nicht nur Fragen stellen, sondern auch die Fragen anderer Nutzer beantworten. Diese Foren sind ein ehrenamtlicher, nicht-kommerzieller, unmoderierter Community-Dienst von www.IT-Visions.de. Wenn Sie kommerzielle Unterstützung für .NET/Scripting/PowerShell suchen, schauen Sie bitte auf unser Support-Angebot und unsere Schulungsangebote für Scripting und Schulungsangebote für .NET.



Entity Framework: Foreignkey-Problem
Autor:  DorisHahn
E-mail:  Antworten bitte nur in das Forum!
Datum:  07.04.2015 12:48:13
Subject:  Entity Framework: Foreignkey-Problem
Bezug zum Buch: 
Message:  Ich arbeite mich gerade in Entity Framework ein und habe mit EntityFramework CodeFirst meine Datenbank modelliert.
Ich habe eine Tabelle ElementData, die Elemente mit ihren Daten enthält. Zur einfacheren Handhabung in EntityFramework habe ich ihr eine Id gegeben.
Jeder Datensatz wird eindeutig auch über die Felder ManufacturerId, BatteryRange und BatteryType referenziert.
Des Weiteren habe ich eine Tabelle ManufacturerData, die die Manufacturer mit ihren Daten enthält. Die Tabelle erhielt ebenfalls eine Id wegen EF.
Das Feld ManufacturerId wäre normalerweise Key. Wenn ich die ManufacturerId jedoch als PK nehme, macht EF auch ein AUTOWERT daraus, was ich nicht möchte.
Ich möchte jetzt die Verknüpfung der beiden Tabellen über die ManufacturerId herstellen, wobei ich bei den Elementdaten eigentlich auch nur den ManufacturerName aus der ManafacturerData-Tabelle brauche.
Wie kann ich angeben, dass der FK bei der ManufacturerData-Tabelle die ManufacturerId referenzieren soll und nicht die Id? Der Manufacturer soll natürlich nicht gelöscht werden, wenn ein Element gelöscht wird. Wenn ein Manufacturer gelöscht
wird, sollen die Elemente auch nicht automatisch gelöscht werden.

Mein Datenmodell:

    public class ToolDBModel : DbContext
    {
            static ToolDBModel()
        {
            Database.SetInitializer<ToolDBModel>(null);
        }

        public ToolDBModel()
            : base("name=ToolDB")
        {
        }

        public virtual DbSet<Element> ElementData { get; set; }
        public virtual DbSet<Manufacturer> ManufacturerData { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<Element>().HasRequired(e => e.Batteriehersteller).WithMany().HasForeignKey(e => e.ManufacturerId).WillCascadeOnDelete(false);
        }
    }
              
    [Table("ElementData")]
    public class Element
    {
        [Key]
        public int Id { get; set; }
        public int ManufacturerId { get; set; }
        public string BatteryRange { get; set; }
        public string BatteryType { get; set; }
        public string ElementMatchcode { get { return ManufacturerId.ToString() + " - " + BatteryRange + " - " + BatteryType; } }
        public Nullable<double> Length { get; set; }
        public Nullable<double> CCenter { get; set; }
        public Nullable<double> Width { get; set; }
        public Nullable<double> Height_1 { get; set; }
        public Nullable<double> Height_2 { get; set; }
        public Nullable<double> Height_3 { get; set; }
        public Nullable<double> HeightFillMin { get; set; }
        public Nullable<double> HeightFillMax { get; set; }
       public Nullable<double> Weight { get; set; }
        public Nullable<System.DateTime> Erstelldatum { get; set; }
        public string Ersteller { get; set; }
        public Nullable<System.DateTime> LastChange { get; set; }
        public Nullable<System.DateTime> Validation { get; set; }

        [ForeignKey("ManufacturerId")]
        public virtual Manufacturer Batteriehersteller { get; set; }
    }

    [Table("ManufacturerData")]
    public class Manufacturer
    {
        [Key]
        public int Id { get; set; }
        public int ManufacturerId { get; set; }
        public string ManufacturerName { get; set; }
        public string ManufacturerFullName { get; set; }
        public string ManufacturerAddress { get; set; }
        public string ManufacturerCity { get; set; }
        public string ManufacturerEmailDomain { get; set; }
        public string BatteryDataChanger1 { get; set; }
        public string BatteryDataChanger2 { get; set; }
        public string ManufacturerCountry { get; set; }
        public string ManufacturerPLZ { get; set; }
        public string Manufacturers2Change { get; set; }
    }

Antworten

  Zurück zum Forum



 .NET Framework-Programmierung -- C#, VB.NET, ASP.NET, u.a.
 Entity Framework: Foreignkey-Problem von DorisHahn  am 7.4.2015 12:48:13 PM


www.IT-Visions.de - Dr. Holger Schwichtenberg / 1998-2023