You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
3.6 KiB
67 lines
3.6 KiB
// ========================================================================
|
|
//
|
|
// Copyright (C) 2016-2017 MARC CHEVALDONNE
|
|
// marc.chevaldonne.free.fr
|
|
//
|
|
// Module : NounoursDBEntities.cs
|
|
// Author : Marc Chevaldonné
|
|
// Creation date : 2016-10-19
|
|
//
|
|
// ========================================================================
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace ex_042_007_EF_CF_One_to_One_FluentAPI
|
|
{
|
|
/// <summary>
|
|
/// La classe qui dérive de DbContext est celle qui permettra de faire les opérations CRUD sur le modèle.
|
|
/// Cette classe contient deux DbSet<T> pour permettre de réaliser des opérations CRUD sur les types T, ici Nounours et CarnetDeSante.
|
|
/// </summary>
|
|
public class NounoursDBEntities : DbContext
|
|
{
|
|
public virtual DbSet<Nounours> NounoursSet { get; set; }
|
|
public virtual DbSet<CarnetDeSante> Carnets { get; set; }
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ex_042_007_EF_CF_One_to_One_FluentAPI.Nounours.mdf;Trusted_Connection=True;");
|
|
}
|
|
|
|
/// <summary>
|
|
/// méthode appelée lors de la création du modèle.
|
|
/// </summary>
|
|
/// <param name="modelBuilder"></param>
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
//création de la table TableNounours
|
|
modelBuilder.Entity<Nounours>().ToTable("TableNounours"); //nom de la table
|
|
modelBuilder.Entity<Nounours>().HasKey(n => n.UniqueId); //définition de la clé primaire
|
|
modelBuilder.Entity<Nounours>().Property(n => n.UniqueId)
|
|
.ValueGeneratedOnAdd(); //définition du mode de génération de la clé : génération à l'insertion
|
|
modelBuilder.Entity<Nounours>().Property(n => n.Nom).IsRequired()
|
|
.HasMaxLength(256); //définition de la colonne Nom
|
|
modelBuilder.Entity<Nounours>().Property(n => n.DateDeNaissance).HasColumnName("Naissance"); //changement du nom de la colonne Naissance
|
|
//modelBuilder.Entity<Nounours>().Property(n => n.Carnet).IsRequired();
|
|
//note : la colonne NbPoils n'est pas changée : utilisation des conventions EF
|
|
|
|
//création de la table "Carnets"
|
|
modelBuilder.Entity<CarnetDeSante>().ToTable("Carnets"); // nom de la table
|
|
modelBuilder.Entity<CarnetDeSante>().HasKey(c => c.UniqueId); //définition de la clé primaire
|
|
//modelBuilder.Entity<CarnetDeSante>().Property(c => c.Owner).IsRequired();
|
|
modelBuilder.Entity<CarnetDeSante>().Property(c => c.UniqueId)
|
|
.ValueGeneratedNever(); // définition du mode de génération de la clé : pas de génération automatique
|
|
//note : la colonne LastModified n'est pas touchée : utilisation des conventions EF
|
|
|
|
|
|
//on précise qu'il y a une relation entre CarnetDeSante et Nounours
|
|
modelBuilder.Entity<Nounours>() //l'entité Nounours...
|
|
.HasOne(n => n.Carnet) //a une propriété obligatoire Carnet...
|
|
.WithOne(c => c.Owner) //reliée à la propriété Owner du Carnet...
|
|
.HasForeignKey<CarnetDeSante>(c => c.UniqueId);//dont la propriété UniqueId est une Foreign Key
|
|
//remplace la ForeignKey
|
|
|
|
base.OnModelCreating(modelBuilder);
|
|
}
|
|
}
|
|
}
|