2017-12-09 2 views
0

The databse엔티티 프레임 워크 코어 하나 하나에

(프로젝트, 경연 대회, LocalJob) -> 그들 각각은 1 WorkDetails 그 중 하나

안녕하세요이 내 데이터베이스와 내가 좋아하는 것입니다있다 1 WorkDetails있다 다음 질문을하십시오 :

프로젝트, 컨테스트 또는 LocalJobs에 대한 WorkDetails에 외래 키 열을 추가해야합니까?

탐색 속성을 구현하는 방법이 있습니까? 에서

+0

당신이 * 기존의 * 데이터베이스를지도하려고합니까? 문제의 관계와 FK가 서로 다르기 때문입니다. –

답변

0

코드 먼저 이것에 대한 소유 유형을 사용할 수 있습니다

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(); 


      } 

     } 
    } 
} 
관련 문제