Estou tendo que fazer um relacionamento entre classes N:N porém armazenando objetos em memória, segue o seguinte relacionamento:
Fiz a implementação da seguinte maneira e gostaria de saber se está correto ou não.
Classe Chemical
public class Chemical
{
public int ID { get; set; }
public string ChemicalName { get; set; }
public string ChemicalFormula { get; set; }
public Decimal MW { get; set; }
public int VFId { get; set; } // Visual_Flow_ID
public Boolean ProjectChemical { get; set; }
public Chemical()
{
}
Classe Stream.
public class Stream
{
public int ID { get; set; }
public string Name { get; set; }
public virtual IList<StreamComposition> Chemicals { get; set; }
public Stream()
{
this.Chemicals = new List<StreamComposition>();
}
public void AddChemical(StreamComposition sc)
{
this.Chemicals.Add(sc);
Console.WriteLine("Adding Chemical: " + sc.Chemical.ChemicalName +
" to the Stream: => " + sc.Stream.Name + "\n");
}
}
Classe StreamComposition
public class StreamComposition
{
public virtual Stream Stream { get; set; }
public virtual Chemical Chemical { get; set; }
public Decimal MolePerCent { get; set; }
public StreamComposition()
{
}
}
Populando os objetos
Criação da Stream
Stream Stream1 = new Stream() { ID = 1, Name = "SHD4", };
Criação dos 3 objetos 'Chemicals'
Chemical ch1 = new Chemical() // Criando uma 'Chemical'
{
ID = 1,
ChemicalName = "Hidrogenio",
ChemicalFormula = "H",
MW = 2,
VFId = 2,
ProjectChemical = true
};
Chemical ch2 = new Chemical() // Criando outra 'Chemical'
{
ID = 2,
ChemicalName = "Ferro",
ChemicalFormula = "Fe",
MW = 4,
VFId = 8,
ProjectChemical = false,
};
Chemical ch3 = new Chemical()
{
ID = 3,
ChemicalName = "Agua",
ChemicalFormula = "H20",
MW = 9,
VFId = 10,
ProjectChemical = true,
};
Criação das 3 classes associativas
StreamComposition sc1 = new StreamComposition() // Criando StreamComposition
{
Stream = Stream1,
Chemical = ch1,
MolePerCent = 4.0m,
};
StreamComposition sc2 = new StreamComposition() // Criando StreamComposition
{
Stream = Stream1,
Chemical = ch2,
MolePerCent = 8.0m,
};
StreamComposition sc3 = new StreamComposition() // Criando StreamComposition
{
Stream = Stream1,
Chemical = ch3,
MolePerCent = 8.0m,
};
Atribuindo as Chemicals criada para a Stream 'Stream1'
Stream1.AddChemical(sc1);
Stream1.AddChemical(sc2);
Stream1.AddChemical(sc3);