Я только начал играть с активной записью Касла, потому что это похоже на нежный путь в 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;}
}
Комплект камеры должен содержать любое количество штативов и камер. Наборы камер существуют независимо от камер и штативов, но иногда связаны между собой.
Проблема в том, что если я использую createchema, это накладывает ограничения внешнего ключа на таблицы Camera и Tripod. Я не хочу этого, я хочу иметь возможность установить нулевой CamKitId на столах штатива и камеры, чтобы указать, что он не является частью CameraKit.
Есть ли способ сообщить activerecord / nhibernate о том, чтобы он по-прежнему считался связанным, без обеспечения целостности? Я думал, что мог бы иметь запись cameraKit там, чтобы указать «нет комплекта камеры», но это похоже на oeverkill.
Или моя схема неверна?
Я делаю то, что не должен делать с ORM? (Я не особо использовал ORM)
Спасибо!