Fremdschlüssel in HasOptional () zuordnen. WithOptionalDependent () - Beziehung in Entity Framework 6
Ich habe das folgende Datenmodell in Entity Framework 6.1.3:
using System.Data.Entity;
public class Student
{
public int Id { get; set; }
public virtual Contact Contact { get; set; }
}
public class Contact
{
public int Id { get; set; }
public virtual Student Student { get; set; }
}
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Contact>()
.HasOptional(x => x.Student)
.WithOptionalDependent(x => x.Contact)
.WillCascadeOnDelete(true);
}
}
public static class Program
{
private static void Main()
{
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
using (var context = new MyContext())
context.Database.Initialize(force: true);
}
}
Wenn ich diesen Code starte, erhalte ich genau die richtige Tabellenstruktur, die ich anstrebe:
dbo.Contacts
Id (PK)
Student_Id (FK, NULL, CASCADE ON DELETE)
dbo.Students
Id (PK)
Jetzt möchte ich jedoch das @ hinzufügStudent_Id
-Eigenschaft, die im @ verfügbar sein soContact
Entität. So kann ich das @ lesStudent_Id
ohne die andere Tabelle durch @ verbinden zu müss.Student.Id
navigation.
Wenn ich die Eigenschaft zum @ hinzufüContact
Entität, ich ende entweder mit zwei SpaltenStudent_Id
undStudent_Id1
, oder ich erhalte eine Fehlermeldung mit dem TitelEach property name in a type must be unique.
.
Die Spalte befindet sich bereits in der Datenbank. Ich muss sie nur in der Entität haben. Warum gibt es so viele Probleme? Gibt es eine Lösung?