我正在尝试在果园中构建自定义模块,并且需要/希望有一些1:1的表关系。我已经阅读了Orchard 1-n and n-n doc,在创建一个继承了ISessionConfigurationEvents的Mappings类时,它似乎只在最后谈到1-1
<Target Name="EnforcePostCompilationRules" AfterTargets="AfterBuild">
<EnforceMethodParameterDefaultValue />
</Target>
我不明白如何让Nhibernate链接表格。我是否需要构建它们,就像它们是1-n然后将上面的代码放在一起使得Nhibernate将表视为1比1,但是当使用代码时,我仍然必须将关系视为1的列表?
我有一个产品表,其中包含由两个不同部门管理的字段,即营销和采购。我想要一个ProductRecord表,它与ProductMarketingInfoRecord有1:1的关系,与ProductPurchasingInfoRecord有1:1的关系。我想在明确的单独表中保留它的一个原因是我想使用rowversion字段(SQL Server中的时间戳),我认为我通过在迁移类中编写自定义sql命令来工作。如果有更好的方法,请告诉我
所以在我的模型文件夹中我有:
defaultModel.Override<ClassA>(x => x.HasOne(y => y.ClassB));
Migrations.cs文件
public class ItemRecord {
public virtual Guid Id { get; set; }
public virtual string ItemNumber { get; set; }
// more fields ...
public virtual ItemPurchaingInfoRecord ItemPurchasingInfoRecord { get; set; }
public virtual ItemPurchaingInfoRecord ItemMarketingInfoRecord { get; set; }
}
public class ItemPurchasingInfoRecord {
public virtual Guid Id { get; set; } //should match ItemRecord.Id
// more purchasing fields ....
public virtual byte[] RowVersion { get; set; }
public virtual ItemRecord ItemRecord { get; set; }
}
public class ItemMarketingInfoRecord {
public virtual Guid Id { get; set; } //should match ItemRecord.Id
// more marketing fields ....
public virtual byte[] RowVersion { get; set; }
public virtual ItemRecord ItemRecord { get; set; }
}
启用模块并检查数据库后,表上没有外键关系。我是否需要以手动添加rowversion / timestamp字段的方式手动创建这些外键?如果我这样做,Nhibernate会认识到这种关系吗?