Hace mucho no posteo en el foro, pero siempre va a ser mi última opción cuándo no encuentre la información en ningún otro lado o no pueda entender conceptos..
Vengo ahora con un problema de mapeos, estoy desarrollando un sistemita, para uso personal, donde voy a registrar las deudas o deudores que tengo.
Les paso código, que explica más que mil palabras:
Código:
public class Person
{
protected virtual long Id { get; set; }
protected virtual string Name { get; set; }
protected virtual string Nickname { get; set; }
protected virtual string Surname { get; set; }
public Person() { }
public Person(string name, string nickname, string surname)
{
Name = name;
Nickname = nickname;
Surname = surname;
}
}
Código:
public abstract class Transaction
{
protected virtual long Id { get; set; }
protected virtual float OriginalAmount { get; set; }
protected virtual float RemainingAmount { get; set; }
protected virtual string Detail { get; set; }
protected virtual DateTime Stamp { get; set; }
protected virtual Person Person { get; set; }
protected Transaction() { }
protected Transaction(float originalAmount, string detail, Person person)
{
OriginalAmount = originalAmount;
RemainingAmount = originalAmount;
Detail = detail;
Stamp = DateTime.Now;
Person = person;
}
}
public class Asset : Transaction
{
public Asset() { }
public Asset(float originalAmount, string detail, Person person) :
base(originalAmount, detail, person) { }
}
Como es un sistema para mi, solo me centro en las transacciones que se producen y no en las personas, aunque quiero tenerlas registradas. Debido a esto, cada transacción tiene que estar registrada a una persona (clase Person).
Al registrar una transacción, si o si, debe estar asociada a una persona.
Vamos a la BD:
Código:
Table - Person
Id - bigint
Name - varchar(50)
Nickname - varchar(50)
Surname - varchar(50)
Código:
Table - Asset
Id - bigint
OriginalAmount - float
RemainingAmount - float
Detail - varchar(50)
Stamp - Date
PersonId - bigint (fk a Person.Id)
Ahora a los mapeos, el error que estoy teniendo es que no inserta el PersonId correspondientemente, lo intenta insertar como null y al tenerlo no nullable me rompe.
Código:
<class name="Person">
<id name="Id">
<generator class="native"/>
</id>
<property name="Name"/>
<property name="Nickname"/>
<property name="Surname"/>
</class>
Código:
<class name="Asset">
<id name="Id">
<generator class="native"/>
</id>
<property name="OriginalAmount"/>
<property name="RemainingAmount"/>
<property name="Detail"/>
<property name="Stamp"/>
<one-to-one name="Person"
constrained="true"
foreign-key="none"
property-ref="Id"
class="Person" />
</class>
Si les soy sincero, soy nuevo con NHibernate, me he copiado varios mapeos one-to-one y ninguno me funcionó. Siento que mi relación de clases no es consistente con mi relación de BD.
Si me pueden orientar fantástico.
Saludos y gracias!