我剛開始玩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