ОК, это может быть немного подробно, поэтому позвольте мне начать с некоторых основ.
Smooth - это проект сообщества First Code для habanero ORM.Smooth основан на подходе «Соглашение над конфигурацией».
Для ваших объектов домена Habanero не требуется свойство внешнего ключа, чтобы оно могло корректно отображаться в базе данных при условии, что вы следуете некоторому соглашению, которое может выяснить Smooth..
Обычно
public class Customer : BusinessObject
{
}
public class SalesOrder : BusinessObject
{
/// <summary>
/// The type this SalesOrder is for.
/// </summary>
public virtual Customer Customer
{
get { return Relationships.GetRelatedObject<Customer>("Customer"); }
set { Relationships.SetRelatedObject("Customer", value); }
}
}
В этом случае заказ клиента имеет единственную связь с клиентом.Заказчик обязателен в отношении заказа на продажу, т. Е. Заказ на продажу не может быть сохранен без установки клиента.
На уровне домена все это имеет смысл.Однако на уровне базы данных отношения с клиентами отображаются с использованием внешнего ключа в таблице SalesOrder.Если вы следуете соглашению, что CustomerID является свойством внешнего ключа в таблице SalesOrder, то это все, что вам нужно сделать, чтобы установить отношения в модели домена и правильно сопоставить их с базой данных.
Теперь дляответ на ваш вопрос.
Если классы определены в соответствии с вышеизложенным, то все, что вам нужно сделать, это добавить атрибут «[AutoMapCompulsory]», и Smooth выполнит все необходимые настройки отношения и его внешнегоКлюч как обязательный для вас.
public class Customer : BusinessObject
{
}
public class SalesOrder : BusinessObject
{
/// <summary>
/// The type this SalesOrder is for.
/// </summary>
[AutoMapCompulsory]
public virtual Customer Customer
{
get { return Relationships.GetRelatedObject<Customer>("Customer"); }
set { Relationships.SetRelatedObject("Customer", value); }
}
}
Надеюсь, это поможет Бретт