¿Cómo se maneja 'relaciones' SubSonic con la migración?
-
16-09-2019 - |
Pregunta
De acuerdo con este artículo: http://subsonicproject.com/docs/3.0_Migrations
Bottom line: if you're a developer that is concerned about database design,
migrations might not be for you.
Ok, está bien, puedo tratar a la base de datos simplemente como un repositorio persistente de datos que no contiene ninguna lógica de negocio. En otras palabras, un archivo de texto glorificado.
Lo que no sé hacer es relacionar dos objetos entre sí. Tomemos, por ejemplo, estas dos clases:
public class Disaster
{
public int DisasterId { get; set; }
public string Name { get; set; }
public DateTime? Date { get; set; }
public IList<Address> Addresses { get; set; }
}
public class Address
{
public int AddressId { get; set; }
public string WholeAddressHereForSakeOfBrevity { get; set; }
}
Disaster
contiene un IList
de Addresses
múltiple que se vieron afectadas por el desastre. Cuando uso SimpleRepository
añadir estos a la base de datos con SimpleRepositoryOptions.RunMigrations
, genera las tablas con todas las columnas, pero no hay columnas de clave externa como se esperaba.
¿Cómo podría relacionar estos dos juntos de manera que cuando llamo Disaster.Addresses
, consigo una lista de todos los Addresses
afectada? Es esto posible o tengo que usar ActiveRecord lugar y crear las tablas de base en primer lugar? O tengo que añadir en una columna de ID de la catástrofe en Address
? Si es así, ¿cómo funciona este método para las relaciones muchos-a-muchos?
Solución
Es posible - que acaba de hacer a mano es todo. Añadir un alojamiento a Desastres llamado "Dirección" y que sea un IList <> (o puede que sea IQueryable si usted quiere que Lazy Load). Al recuperar su Desastres, sólo asegúrese de recuperar sus direcciones.
Es una especie de "manual" - pero esa es la idea. Estoy trabajando en mejoras a esto que estoy esperando para empujar en una versión posterior.
Y antes de preguntar por qué no lo hice en el primer lugar :) es porque no sé si debería usar una de muchos a muchos o muchos-1 basado en la relación padre / hijo. En su ejemplo, supongo que es probablemente 1 a muchos, pero teniendo en cuenta lo que sé acerca de las direcciones y los desastres (especialmente en la Florida) que probablemente debería ser de muchos a muchos.
Bottom Line - ¿cómo SubSonic saber esto? Podríamos introspección ambos objetos para "bidireccionalidad", que significa que si tiene muchos desastres Dirección de lo que es de muchos a muchos (que es obvio) -. Pero eso no es feliz de codificación si te gusta DDD
Me estoy inclinando hacia esa regla con algún tipo de anulación que forzar la situación. Sus pensamientos sobre esto son bienvenidos:)