我刚开始玩Castle活动记录,因为它看起来像一个温和的方式进入NHibernate。我非常喜欢在开发过程中从我的类中生成数据库模式的想法。Castle ActiveRecord - 不执行参照完整性的模式生成?
我想要做类似如下的内容:
[ActiveRecord]
public class Camera : ActiveRecordBase<Camera>
{
[PrimaryKey]
public int CameraId {get; set;}
[Property]
public int CamKitId {get; set;}
[Property]
public string serialNo {get; set;}
}
[ActiveRecord]
public class Tripod : ActiveRecordBase<Tripod>
{
[PrimaryKey]
public int TripodId {get; set;}
[Property]
public int CamKitId {get; set;}
[Property]
public string serialNo {get; set;}
}
[ActiveRecord]
public class CameraKit : ActiveRecordBase<CameraKit>
{
[PrimaryKey]
public int CamKitId {get; set;}
[Property]
public string description {get; set;}
[HasMany(Inverse=true, Table="Cameras", ColumnKey="CamKitId")]
public IList<Camera> Cameras {get; set;}
[HasMany(Inverse=true, Table="Tripods", ColumnKey="CamKitId")]
public IList<Camera> Tripods {get; set;}
}
一个camerakit应该包含任何数量的三脚架和相机。相机套件独立于相机和三脚架存在,但有时相关。
问题是,如果我使用createscheche,这将把相机和三脚架表上的外键约束。我不想要这个,我想能够在三脚架和相机表上设置CamKitId为null,以表明它不是CameraKit的一部分。
有没有办法告诉activerecord/nhibernate仍然认为它是相关的,而不强制完整性?我想我可以在那里有一个cameraKit记录来表示“没有相机套件”,但它看起来像oeverkill。
或者是我的模式错了? 我在做什么,我不应该与一个ORM? (我还没有真正使用过ORMs)
谢谢!
啊!我懂了。我确实看过属于自己,但出于某种原因,我认为它和我的例子中的hasmany一样,但是相反。我现在觉得自己有点白痴;) 谢谢Mauricio! – Simon 2010-04-28 05:40:42