2017-12-09 3 views
0

The databseEntity Framework Core One to One

(Projekt, Wettbewerb, LocalJob) -> Jeder von ihnen hat 1 Werkdetails und 1 Werkdetails hat einer von ihnen

Hallo dies meine Datenbank ist, und ich möchte um Ihnen die folgende Frage zu stellen:

Sollte ich eine Fremdschlüsselspalte in WorkDetails für Projekt, Wettbewerb oder LocalJobs hinzufügen.

Und wenn ich Navigationseigenschaft implementieren muss?

+0

Sie * * vorhandene Datenbank abzuzubilden Versuchen? Weil die betreffenden Beziehungen und FKs dort anders sind. –

Antwort

0

In Code-first könnten Sie diese im Besitz Typen verwenden:

using Microsoft.EntityFrameworkCore; 
using System.Linq; 
using System; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Collections.Generic; 

namespace efCoreTest 
{ 

    class Project 
    { 
     public int Id { get; set; } 
     public WorkDetail WorkDetail { get; set; } 

    } 
    class Contest 
    { 
     public int Id { get; set; } 
     public WorkDetail WorkDetail { get; set; } 
    } 
    class LocalJob 
    { 
     public int Id { get; set; } 
     public WorkDetail WorkDetail { get; set; } 
    } 
    class WorkDetail 
    { 
     public int Id { get; set; } 
     public DateTime StartDate { get; set; } 
     public DateTime EndDate { get; set; } 
    } 
    class Db : DbContext 
    { 
     public DbSet<Project> Projects { get; set; } 
     public DbSet<Contest> Contests { get; set; } 
     public DbSet<LocalJob> LocalJobs { get; set; } 

     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
     { 
      optionsBuilder.UseSqlServer("Server=.;Database=efCoreTest;Integrated Security=true"); 
     } 
     protected override void OnModelCreating(ModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<Project>().OwnsOne(p => p.WorkDetail); 
      modelBuilder.Entity<Contest>().OwnsOne(p => p.WorkDetail); 
      modelBuilder.Entity<LocalJob>().OwnsOne(p => p.WorkDetail); 



      base.OnModelCreating(modelBuilder); 
     } 
    } 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var db = new Db()) 
      { 
       db.Database.EnsureDeleted(); 
       db.Database.EnsureCreated(); 


      } 

     } 
    } 
} 
Verwandte Themen