C# Castle ActiveRecord-在不强制引用完整性的情况下生成模式?

C# Castle ActiveRecord-在不强制引用完整性的情况下生成模式?,c#,nhibernate,castle-activerecord,C#,Nhibernate,Castle Activerecord,我刚开始玩Castle active record,因为它似乎是进入NHibernate的一种温和方式。我非常喜欢在开发过程中从我的类生成数据库模式的想法 我想做以下类似的事情: [ActiveRecord] public class Camera : ActiveRecordBase<Camera> { [PrimaryKey] public int CameraId {get; set;} [Property] public int CamKitI

我刚开始玩Castle active record,因为它似乎是进入NHibernate的一种温和方式。我非常喜欢在开发过程中从我的类生成数据库模式的想法

我想做以下类似的事情:

[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;}

}
[ActiveRecord]
公共类摄像机:ActiveRecordBase
{
[主密钥]
public int CameraId{get;set;}
[物业]
public int CamKitId{get;set;}
[物业]
公共字符串serialNo{get;set;}
}
[动态记录]
公共类三脚架:ActiveRecordBase
{
[主密钥]
public int TripodId{get;set;}
[物业]
public int CamKitId{get;set;}
[物业]
公共字符串serialNo{get;set;}
}
[动态记录]
公共类CameraKit:ActiveRecordBase
{
[主密钥]
public int CamKitId{get;set;}
[物业]
公共字符串说明{get;set;}
[HasMany(Inverse=true,Table=“Cameras”,ColumnKey=“CamKitId”)]
公共IList摄像机{get;set;}
[HasMany(Inverse=true,Table=“Tripods”,ColumnKey=“CamKitId”)]
公共IList三脚架{get;set;}
}
摄像机应包含任意数量的三脚架和摄像机。相机套件独立于相机和三脚架,但有时是相关的

问题是,如果我使用createschema,这将在摄影机和三脚架表上设置外键约束。我不希望这样,我希望能够在三脚架和相机台上将CamKitId设置为null,以表明它不是CameraKit的一部分

有没有一种方法可以告诉activerecord/nhibernate在不强制执行完整性的情况下仍然将其视为相关的?我在想我可以在里面放一张cameraKit唱片,上面写着“没有照相机套件”,但看起来像是oeverkill

还是我的模式错了? 我是不是在用ORM做我不该做的事?(我没怎么用过)


谢谢

使用
[BelongsTo]
建模多对一关系,例如:

[ActiveRecord]
public class Camera : ActiveRecordBase<Camera>
{
    [PrimaryKey]
    public int CameraId {get; set;}

    [BelongsTo]
    public CameraKit CamKit {get; set;}

    [Property]
    public string serialNo {get; set;}
}
[ActiveRecord]
公共类摄像机:ActiveRecordBase
{
[主密钥]
public int CameraId{get;set;}
[附件]
公共CameraKit CamKit{get;set;}
[物业]
公共字符串serialNo{get;set;}
}
通过这种方式,您可以将摄像头的CamKit设置为null,以指示“无摄像头套件”


请参阅以获取参考。

使用
[BelongsTo]
对多对一关系进行建模,例如:

[ActiveRecord]
public class Camera : ActiveRecordBase<Camera>
{
    [PrimaryKey]
    public int CameraId {get; set;}

    [BelongsTo]
    public CameraKit CamKit {get; set;}

    [Property]
    public string serialNo {get; set;}
}
[ActiveRecord]
公共类摄像机:ActiveRecordBase
{
[主密钥]
public int CameraId{get;set;}
[附件]
公共CameraKit CamKit{get;set;}
[物业]
公共字符串serialNo{get;set;}
}
通过这种方式,您可以将摄像头的CamKit设置为null,以指示“无摄像头套件”


请参阅以供参考。

Ah!我懂了。我确实看了belongsto,但出于某种原因,我认为它的工作原理与我的示例中的hasmany相同,但相反。我现在觉得自己有点像个白痴;)谢谢毛里西奥!啊!!我懂了。我确实看了belongsto,但出于某种原因,我认为它的工作原理与我的示例中的hasmany相同,但相反。我现在觉得自己有点像个白痴;)谢谢毛里西奥!