Fluente nibernate ilist
-
10-12-2019 - |
Domanda
Ho la seguente classe:
public class Address
{
public virtual int Id { get; private set; }
public virtual IList<string> AddressLines { get; set; }
public virtual string CityOrTown { get; set; }
public virtual string County { get; set; }
public virtual string Postcode { get; set; }
public virtual string Country { get; set; }
public virtual Member Member { get; set; }
public Address()
{
AddressLines = new List<string>();
}
public virtual void AddAddressLine(string addressLine)
{
AddressLines.Add(addressLine);
}
}
.
e la seguente classe di mappatura:
public AddressMap()
{
Id(x => x.Id);
HasMany(x => x.AddressLines).Element("AddressLine");
Map(x => x.CityOrTown);
Map(x => x.County);
Map(x => x.Postcode);
Map(x => x.Country);
References(x => x.Member);
}
.
La tabella 'Addresslines' è creata con due colonne 'indirizzo_id' e 'indirizzamento' con una chiave straniera per la tabella 'Indirizzo'.
Per qualche motivo quando viene salvato un indirizzo, la collezione 'Addresslines' non è persiste al database;
Sono manca qualcosa?
Non sembra esserci una grande quantità di informazioni là fuori per la mappatura delist.Sono consapevole del fatto che questo non è stato possibile essere possibile perché la stringa è il tipo di valore non un tipo di entità, ma sono portato a credere che ora dovrebbe essere possibile?
Soluzione
HasMany(x => x.AddressLines).Element("AddressLine").Cascade.AllDeleteOrphan();
Altri suggerimenti
You need to set a default cascade convention.
When using Automapping, it's done as follows:
AutoMap.Assemblies(_assemblies)
.Conventions.Add(
// Do cascading saves on all entities so lists will be
// automatically saved
DefaultCascade.All(),
);
As far as I know, you can do the same thing with mapping classes, but I don't know the exact syntax.