0

Ich habe bereits viele Fragen gelesen, konnte aber immer noch keine Lösung für mein Problem finden.EF erforderlich für optionale Beziehung nicht mit den richtigen Spalten für FK

ich so etwas haben bin versucht drawed ich sehr schnell

enter image description here

erster Versuch:

public class CarMap : EntityTypeConfiguration<Car> 
    { 
     public CarMap() 
     { 
      ToTable("Cars", Constants.Schema); 
      Property(t => t.EngineId); 

      HasRequired(x => x.SPropertyPolicyInsurance).WithMany().HasForeignKey(x => x.SPropertyPolicyInsuranceId); 
     } 
    } 



public class Car : MyBase 
    { 
     public int EngineId { get; set; } 
     public virtual Engine Engine { get; set; } 
    } 


public class EngineMap : EntityTypeConfiguration<Engine> 
    { 
     public EngineMap() 
     { 
      ToTable("Engines", Constants.Schema); 

      Property(t => t.MyField1).HasColumnType("nvarchar").HasMaxLength(128).IsRequired(); 
      Property(t => t.MyField2).HasColumnType("nvarchar").HasMaxLength(128).IsRequired(); 
      Property(t => t.MyField3).HasColumnType("bit").IsRequired();    
     } 
    } 


public class Engine : MyBase 
    { 
     public string MyField1 { get; set; } 
     public string MyField2 { get; set; } 
     public bool MyField3 { get; set; } 

     public virtual Car Car { get; set; } 
    } 

diese Lösung eine neue Spalte auf meinem Motor Tabelle erstellt, Ich will nicht ...

Zweiter Versuch:

die CarMap dem folgenden Code ändern:

public class CarMap : EntityTypeConfiguration<Car> 
    { 
     public CarMap() 
     { 
      ToTable("Cars", Constants.Schema); 
      Property(t => t.EngineId); 

      HasRequired(x => x.Engine).WithOptional(p => p.Car); 
     } 
    } 

Das Problem ist, dass es nicht die Spalte EngineID nicht verwendet meine FK Schlüsselwerte speichern ...

Vielen Dank für Ihre Hilfe sowieso ...

Antwort

0

Es macht nichts, es funktioniert jetzt, habe ich meinen Code gelöscht, löschte zusätzliche Beziehungen, die möglicherweise widersprüchlich waren und jetzt die folgende Fluent API-Beziehung funktioniert es nur mit einer Spalte für FK (EngineId). Hoffnung

CreateTable(
    "myschema.Engines", 
     c => new 
     { 
      Id = c.Int(nullable: false), 
      myfield = c.String(nullable: false, maxLength: 128), 
      myfield2 = c.String(nullable: false, maxLength: 128), 
      myfield3 = c.Boolean(nullable: false), 
     }) 
    .PrimaryKey(t => t.Id) 
    .ForeignKey("basechema.Engines", t => t.Id) 
    .Index(t => t.Id); 


CreateTable(
    "myschema.Cars", 
     c => new 
     { 
      Id = c.Int(nullable: false), 
      EngineId = c.Int(nullable: false), 
     }) 
    .PrimaryKey(t => t.Id) 
    .ForeignKey("baseschema.Cars", t => t.Id) 
    .ForeignKey("myschema.Engines", t => t.EngineId) 
    .Index(t => t.Id) 
    .Index(t => t.EngineId); 

ich es jemand da draußen hilft;)

:

Der resultierende Code erste Migrationen sind die folgenden

Verwandte Themen