2009-10-18 6 views
0

Je travaille sur un modèle pour une compétition de pêche simple et j'ai quelques problèmes avec ma conception.Souhaitez quelques conseils de modélisation pour les valeurs dépendantes

La classe principale pour le jeu de pêche est la capture et il ressemble à ceci:

public class Capture : Entity { 

    public virtual int Weight { get; set; } 
    public virtual int Length { get; set; } 
    public virtual DateTime DateForCapture { get; set; } 

    public virtual User CapturedBy { get; set; } 
    public virtual Species Species { get; set; } 
} 

Alors Theres loin pas de problème, mais je ne suis pas vraiment sûr de savoir comment modéliser le jeu.

  • Chaque espèce est reliée à un poids de référence qui change d'une année à
  • Le nombre de points pour une capture est son poids divisé par le poids de référence actuel pour l'espèce.

Une façon de résoudre le problème est de connecter une capture à SpeciesReferenceWeight au lieu des espèces

public class SpeciesReferenceWeight : Entity 
{ 
    public virtual Species Species { get; set; } 
    public virtual int ReferenceWeight { get; set; } 
    public virtual int Year { get; set; } 
} 

Mais de cette façon que la capture est relié aux détails de mise en œuvre du jeu et de mon point de vue une capture est toujours une capture même si elle n'est pas incluse dans un jeu.

Le résultat que je vise est: http://hornalen.net/fishbonkern/2007/ que j'ai écrit il y a quelques années avec force brute sql et aucun modèle de domaine.

Je serais très heureux pour toutes sortes de retour sur cette question.

Répondre

0

Si vous étudiez Fowler's patterns for things that changes with time (c'est-à-dire le poids de référence), je pense que vous trouverez une solution.

+0

Je suis sûr que c'est une solution possible et je vais essayer. Je pense que l'interrogation sera la partie la plus difficile à résoudre mais je suppose qu'il est possible de la résoudre avec des propriétés calculées nhibernates? – orjan

0

Il semble qu'il y ait des entités manquantes. Vous parlez d'un jeu et capture cela pourrait faire partie d'un jeu ou non. Pour vous aider à démarrer, vous pouvez présenter l'entité GameCapture.

public class GameCapture : Entity 
{ 
    public virtual Capture { get; set; } 
    public virtual SpeciesReferenceWeight { get; set; } 
} 

Vous avez probablement besoin d'une classe Game.