Tengo tres clases llamadas Broker
, Instrument
y BrokerInstrument
.Cómo agregar un elemento a un ISet <T>?
using Iesi.Collections.Generic;
public class Broker : ActiveDefaultEntity
{
public virtual string Name { get; set; }
public virtual ISet<BrokerInstrument> BrokerInstruments { get; set; }
}
public class Instrument : Entity
{
public virtual string Name { get; set; }
public virtual string Symbol {get; set;}
public virtual ISet<BrokerInstrument> BrokerInstruments { get; set; }
public virtual bool IsActive { get; set; }
}
public class BrokerInstrument : Entity
{
public virtual Broker Broker { get; set; }
public virtual Instrument Instrument { get; set; }
public virtual decimal MinIncrement { get; set; }
}
Si creo tres objetos nuevos (uno de cada tipo) usando esas clases ¿cómo puedo asociarlos? Por ejemplo:
Instrument instrument = new Instrument {
Name = "Test Instrument",
Symbol = "Test",
IsActive = true
};
Broker broker = new Broker {
Name = "My Test Broker",
IsActive = true,
IsDefault = false
};
BrokerInstrument brokerInstrument = new BrokerInstrument {
Broker = broker,
Instrument = instrument,
MinIncrement = 0.01M
};
¿Cómo funciona la instrument
"saben" que una nueva brokerInstrument
se asocia ahora con ella? Si ahora ejecuto if (instrument.Brokerinstruments == null)
obtengo true
. ¿Tengo que asociar los objetos en la declaración BrokerInstrument
y luego volver y agregarlo al instrument.BrokerInstruments ISet
?
Si lo intento hacer: instrument.BrokerInstruments.Add(instrument)
me sale un error porque es nulo. Confuso. ¿Qué me estoy perdiendo? ¿Cuál es la mejor manera de modelar relaciones como esta? estos objetos serán persistentes en una base de datos usando NHibernate.
Parece prometedor, sin embargo cuando ejecuto una prueba de unidad NHibernate se queja con 'TestFixture failed: NHibernate.PropertyNotFoundException: No se pudo encontrar un setter para la propiedad 'BrokerInstruments' en la clase 'MooDB.Domain.Instrument'' ¿Tengo que hacer algo especial en NHibernate ¿ahora? Parece bastante complicado, pero todo lo que quiero hacer es modelar una relación uno-muchos en un modelo de dominio y luego tener NHibernate persistir en los cambios al db. –
Ah, me perdí el bit de NHibernate. Voy a modificar en consecuencia ... Hecho. –
¡Casi! en la línea 'protected set' obtengo un error:' No se puede convertir implícitamente el tipo 'System.Collections.Generic.IEnumerable' en 'System.Collections.Generic.ISet '. Existe una conversión explícita (¿falta un elenco?) ' –