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?

¿Fue útil?

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:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top