de Merise vers .net

a marqué ce sujet comme résolu.

BONJOUR

Je suis débutant en .net

tout aide, conseil et bonne pratique sera la bien venu.

peux je utiliser l’entity framwork code first pour faire la conception et creer une base de données?

est ce que on peut convertir de MCD suivent:

mcd partie1

Et

mcd partie2

vers Entity framwork code_first suivant:

entité compte de charge

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BusinessEntites
{
    public class CompteCharge
    {
        public int Id { get; set; }

        [DisplayName("Compte SCF")]
        public string CptCharge { get; set; }

        [DisplayName("Libelle")]
        public string Designation { get; set; }

        public virtual ICollection<CompteAnalytique> CompteAnalytique { get; set; }

        public virtual ICollection<DepenseDRA> DepenseDRA { get; set; }
        public virtual ICollection<Structure> Structure { get; set; }
    }
}

entité compte analytique

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BusinessEntites
{
    public class CompteAnalytique
    {
        public int Id { get; set; }

        [DisplayName("Compte Analytique")]
        [StringLength(3)]
        public string CptAnal { get; set; }

        public string Designation { get; set; }

        public virtual ICollection<CompteCharge> CompteCharge { get; set; }

        public virtual ICollection<DepenseDRA> DepenseDRA { get; set; }
        public virtual ICollection<Structure> Structure { get; set; }
    }
}

entité Dépense DRA

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BusinessEntites
{
    public class DepenseDRA
    {
        public int Id { get; set; }

        [DisplayName("N° Bon Petite Caisse")]
        public int NumBonPetiteCaisse { get; set; }

        [DisplayName("Débit")]
        public double Debit { get; set; }
        public string Libelle { get; set; }

        [DisplayName("Date")]
        [DisplayFormat(DataFormatString = "{0,dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime DateDepense { get; set; }

        public int DRAId { get; set; }

        [ForeignKey("CompteCharge")]
        public int CompteChargeId { get; set; }

        [ForeignKey("CompteAnalytique")]
        public int CompteAnalytiqueId { get; set; }

        public virtual DRA DRA { get; set; }
        public virtual CompteCharge CompteCharge{ get; set; }
        public virtual CompteAnalytique CompteAnalytique{ get; set; }

    }
}

Entité Structure

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;

namespace BusinessEntites
{
    public class Structure
    {
        public int StructureId { get; set; }
        [RegularExpression(@"[A-Z]")]
        public string Code { get; set; }

        public string Nom { get; set; }

        public virtual ICollection<DRA> DRA { get; set; }

        public virtual ICollection<CompteCharge> CompteCharge { get; set; }

        public virtual ICollection<CompteAnalytique> CompteAnalytique { get; set; }

        public virtual ICollection<SequenceDRA> SequenceDRA { get; set; }

        public virtual ICollection<MonnaieEspece> MonnaieEspece { get; set; }

        public int? StructureHierId { get; set; }

        [ForeignKey("StructureId")]
        public virtual Structure StructureHierarchique { get; set; }
    }
}

`

bonjour merci de votre réponse. j’ai poster dans un forum un message sur un problème de conception sur mon projet, et j’ai utiliser entity framwork code first comme approche pour faire la conception, et pour créer la base de données. quelqu’un m’a répondu sur ce forum que: l’approche code first est tres mauvaise approche pour faire la conception, et il vaut mieux faire la conception par merise mcd et créer une base de données et utiliser entity framwork database first

c’est vrais ca  ? Pourquoi virtual sur les liaisons à cardinalité 1,1 vous choque?

Cette personne a donné un très mauvais conseil. En fait database first c’est bien quand on a déjà une base qui est créée ou quand on a une personne spécialisée dans le domaine qui a créé les bons outils, les bons indexes, les bonnes relations…

Quand on code seul, se baser sur DBFirst c’est surtout s’assurer la complexité quand on va devoir faire évoluer les choses.

Pour le virtual, c’est un marqueur qui permet à EF de gérer au mieux ce qu’on appelle le lazy loading. Le problème c’est que la relation 1, 1 est sensé représenter le fait que quoi qu’on fasse on sera toujours lié à une et une seule entité externe bien identifier. Vouloir optimiser le lazy loading est ici un peu contre le concept que représente la cardinalité 1, 1.

Quand on code seul, se baser sur DBFirst c’est surtout s’assurer la complexité quand on va devoir faire évoluer les choses. voulez vous dire code c# généré par data base? cA veux dire quoi s’assurer la complexité quand on va devoir faire évoluer les choses?

Je peux poster le problème sur MCD sur cet forum?

cA veux dire quoi s’assurer la complexité quand on va devoir faire évoluer les choses?

bah le MCD est basé sur un procesus francofrançais pour suivre le développement. Ce processus use profondemment le cycle en V et donc quand on passe à la case "développement" on applique le MCD à la lettre, sans exception.

Quand tu es seul, le cycle en V c’est pas pratique et pour être plus efficace tu vas sûrement fonctionner par jalons successifs (au début je fais la fonctionnalité A, puis la B etc.) et tu vas faire évoluer ton modèle au fur et à mesure. l’approche code first, avec les migrations fonctionne très bien pour ça.

D’ailleurs c’est une approche qui est très utilisée dans le monde du logiciel, même hors .NET. Par exemple zeste de savoir est codé en python avec le framework django et nous utilisons une approche code first.

Je peux poster le problème sur MCD sur cet forum?

Oui tu peux. Mais il faut nous dire quels sont tes besoins précis pour qu’on puisse t’aider.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte