根据这篇文章: 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.

好吧,这很好,我可以把数据库作为数据只是一个持久存储库不包含任何业务逻辑。换句话说,美化了文本文件。

我不知道该怎么办是涉及两个物体在一起。举个例子,这两个类:

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包含由灾害被击中的多个IListAddresses。当我使用SimpleRepository把这些东西加到与SimpleRepositoryOptions.RunMigrations数据库,它产生的所有列的表,但没有外键列如预期。

如何将涉及这两个在一起,这样当我打电话Disaster.Addresses,我得到的所有受影响的Addresses的名单?这是可能的,或者我必须使用ActiveRecord来代替,而首先要创建数据库表?还是我在为灾区的ID到Address添加一列?如果是的话,请问这种方法工作的许多一对多的关系?

有帮助吗?

解决方案

这是可能的 - 你只是手工做它是所有。一个属性添加到灾难称为“地址”,并使其成为一个IList <>(或者你可以把它IQueryable的,如果你想让它延迟加载)。当您找回您的灾难,只是一定要找回您的地址。

这是一种“手动” - 但是这想法。我正在改进这一点,我希望在以后的版本推。

和你问为什么之前我没有做它摆在首位:)那是因为我不知道我是否应该使用多对多或一对多基于父/子关系。在你的榜样,我猜它可能是1对多,但给我知道的地址和灾害(尤其是在美国佛罗里达州),它也许应该是多对多。

底线 - 怎么会亚音速知道这一点?我们可以反思的对象都为“双向性”,这意味着如果地址有许多灾难比它的多对多(这是显而易见的) - 但后来这不是幸福的编码,如果你喜欢DDD

我倾向于与某些类型覆盖的,这将迫使问题这一规则。您对此怎么看,欢迎:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top