Question

D'après cet article: http://subsonicproject.com/docs/3.0_Migrations

Bottom line: if you're a developer that is concerned about database design,
migrations might not be for you.

Ok, c'est très bien, je peux traiter la base de données comme un simple référentiel persistant de données qui ne contient pas de logique métier. En d'autres termes, un fichier texte glorifié.

Ce que je ne sais pas comment faire est relier deux objets ensemble. Prenons par exemple ces deux classes:

public class Disaster
{
    public int DisasterId { get; set; }
    public string Name { get; set; }
    public DateTime? Date { get; set; }
    public IList<Address> Addresses { get; set; }
}

public class Address
{
    public int AddressId { get; set; }
    public string WholeAddressHereForSakeOfBrevity { get; set; }
}

Disaster contient un IList de plusieurs Addresses qui ont été touchés par la catastrophe. Lorsque j'utilise SimpleRepository pour ajouter à la base de données avec SimpleRepositoryOptions.RunMigrations, il génère les tables avec toutes les colonnes, mais aucune colonne de clé étrangère comme prévu.

Comment puis-je relier ces deux ensemble pour que quand je l'appelle Disaster.Addresses, je reçois une liste de tous les Addresses touchés? Est-ce possible ou dois-je utiliser ActiveRecord à la place et créer les tables de base de données en premier? Ou dois-je ajouter dans une colonne pour l'ID de la catastrophe dans Address? Si oui, comment cette méthode fonctionne pour beaucoup à plusieurs relations?

Était-ce utile?

La solution

Il est possible - vous venez de le faire à la main est tout. Ajouter une propriété à Disaster appelé « Adresses » et en faire un IList <> (ou vous pouvez le faire IQueryable si vous voulez qu'il charge Lazy). Lorsque vous récupérez votre catastrophe, juste être sûr de récupérer vos adresses.

Il est une sorte de « manuel » - mais c'est l'idée. Je travaille sur des améliorations à ce que je suis l'espoir de pousser dans une version ultérieure.

Et avant de vous demander pourquoi je ne le faisais pas en premier lieu :) c'est parce que je ne sais pas si je devrais utiliser un grand nombre ou à 1 Beaucoup beaucoup en fonction de la relation parent / enfant. Dans votre exemple, je suppose que c'est probablement 1 à beaucoup, mais étant donné ce que je sais des adresses et des catastrophes (en particulier en Floride), il devrait probablement beaucoup à beaucoup.

Bottom Line - Comment SubSonic savoir? Nous pourrions les deux objets pour introspect « bi-directionnalité », ce qui signifie que si l'adresse a de nombreuses catastrophes que c'est plusieurs à plusieurs (ce qui est évident) -. Mais ce n'est pas heureux de codage si vous aimez DDD

Je penche vers cette règle avec un certain type de dérogation qui forcerait la question. Vos pensées sur ce sont les bienvenus:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top