C# Castle ActiveRecord-在不强制引用完整性的情况下生成模式?
我刚开始玩Castle active record,因为它似乎是进入NHibernate的一种温和方式。我非常喜欢在开发过程中从我的类生成数据库模式的想法 我想做以下类似的事情: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
[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相同,但相反。我现在觉得自己有点像个白痴;)谢谢毛里西奥!