0
votes

Comment utiliser une table pour deux contextes différents dans deux domaines différents?

J'ai des contextes différents dans deux domaines différents et chaque domaine contient une entité "pays". Les deux entités doivent utiliser la même table "pays". Une entité contient des propriétés XZY et l'autre contient des propriétés XZ. Les contextes ne se connaissent pas. La question est que je reçois l'erreur: "Il existe déjà un objet nommé" pays "dans la base de données". Quelle est la meilleure approche dans ce cas, s'il vous plaît? Merci d'avance.


2 commentaires

Vous pouvez créer deux table avec le même nom dans différents schema.


Dupliqué possible de Framework d'entité: une base de données, plusieurs DBcontexts. Est-ce une mauvaise idée?


3 Réponses :


0
votes

Vous devez modifier le nom de la table générée: Comment Spécifier l'entité Framework Cartographie de la table de base?

Utilisez: P>

public class Country {
    public string X { get; set; }
    public string Z { get; set; }

}
public class CountryYInfo {
    public string Y { get; set; }

    public Country Country { get; set; }
    public int CountryId { get; set; }
}


var country1 = new Country() { X = "A", Z = "C" };
var countryInfo = new CountryYInfo { Y = "B", Country = country1 };

var country2 = new Country() { X = "A", Z = "C" };

context.Countries.Add(country1);
context.Countries.Add(country2);


2 commentaires

Merci pour votre réponse. Je pense que je n'ai pas fait clairement, mais le but est que les deux entités utilisent la même table.


@Lex ce que vous essayez de faire (carte 2 différents modèles à la même table est impossible et mauvaise pratique) J'ai modifié ma réponse pour montrer des solutions possibles à votre problème



1
votes

Normalement, une entité n'appartiendrait qu'à un contexte / domaine. Si vous avez besoin de cette entité dans un autre domaine, utilisez simplement le contexte qu'il est défini. Il n'y a rien de mal à utiliser plusieurs contextes dans une transaction. Ce que vous essayez de faire est conceptuellement et techniquement non recommandé, même si cela est possible.


0 commentaires

0
votes

Si vous souhaitez partager les données de pays entre deux domaines, le «pays» est logiquement considéré comme un autre domaine. Référencez le dossier de pays par son ID au lieu d'interdirectionnelle réfraction, qui est une pratique affreuse dans le DDD.


0 commentaires