有两个ContentTypeRecords来了解彼此

时间:2012-11-19 12:19:53

标签: fluent-nhibernate orchardcms

考虑我需要ProductPartRecord类型和ManufacturerPartRecord类型的情况。 在第一种类型中我需要知道谁是这部分的制造商,因此使用ManufacturerPartRecord类型的属性会很方便。 在第二种类型中,我想知道这个制造商生产的产品,因此拥有IList类型的属性会很方便。

显然这是1对多的关系。 将记录放入记录中这是一种不好的做法,这是否可能,因为我面临着实施它的麻烦?

1 个答案:

答案 0 :(得分:1)

有可能。以下是如何做到这一点:

  1. 在迁移中,向ProductPartRecord添加一个类型int的列,名称应为ManufacturerPartRecord_Id,假设Id是主键的名称ManufacturerPartRecord表。
  2. 在迁移中创建外键。它应该看起来像SchemaBuilder.CreateForeignKey("Product_Manufacturer", "ProductPartRecord", new[] { "ManufacturerPartRecord_Id" }, "ManufacturerPartRecord", new[] { "Id" });
  3. ManufacturerPartRecord模型类中,您应添加一个新属性,用于产品列表 - public virtual IList<ProductPartRecord> ProductPartRecords { get; set; }
  4. ProductPartRecord模型类中,您应添加一个新属性,用于获取制造商 - public virtual ManufacturerPartRecord ManufacturerPartRecord { get; set; }
  5. 现在应该全部设置为您的产品自动获得制造商,反之亦然。

    如果你不希望这种情况自动发生,你应该创建一个服务类,它将通过构造函数注入获得IRepository<ManufacturerPartRecord>IRepository<ProductPartRecord>,并自己处理获取和保存列表。