Я искал ресурсы о том, как объявлять отношения внешнего ключа и другие ограничения, используя код сначала EF 4.1 без большой удачи. В основном я создаю модель данных в коде и используя MVC3 для запроса этой модели. Все работает через MVC, что является большим (престиж Microsoft!), Но теперь я хочу, чтобы он НЕ работал, потому что мне нужно иметь ограничения модели данных.
Например, у меня есть объект Order, у которого есть тонна свойств, которые являются внешними объектами (таблицами). Прямо сейчас я могу создать заказ без проблем, но без возможности добавления внешнего ключа или внешних объектов. MVC3 не создает никаких проблем.
Я понимаю, что я мог просто добавить объекты самостоятельно в класс контроллера до сохранения, но я бы хотел, чтобы вызов DbContext.SaveChanges() завершился неудачей, если отношения ограничения не были выполнены.
НОВАЯ ИНФОРМАЦИЯ
Итак, в частности, я хотел бы исключение возникает, когда я пытаюсь сохранить объект Order без указав объект клиента. Эта похоже, не поведение, если я просто составьте объекты, как описано в большинстве документов Code First EF.
Последний код:
public class Order
{
public int Id { get; set; }
[ForeignKey( "Parent" )]
public Patient Patient { get; set; }
[ForeignKey("CertificationPeriod")]
public CertificationPeriod CertificationPeriod { get; set; }
[ForeignKey("Agency")]
public Agency Agency { get; set; }
[ForeignKey("Diagnosis")]
public Diagnosis PrimaryDiagnosis { get; set; }
[ForeignKey("OrderApprovalStatus")]
public OrderApprovalStatus ApprovalStatus { get; set; }
[ForeignKey("User")]
public User User { get; set; }
[ForeignKey("User")]
public User Submitter { get; set; }
public DateTime ApprovalDate { get; set; }
public DateTime SubmittedDate { get; set; }
public Boolean IsDeprecated { get; set; }
}
Это ошибка, которую я получаю сейчас при доступе к созданному VS-представлению для пациента:
СООБЩЕНИЕ ОШИБКИ
Свойство ForeignKeyAttribute по свойству "Пациент" по типу "PhysicianPortal.Models.Order" не действительный. Имя внешнего ключа "Родитель" не было найдено на зависимом типе 'PhysicianPortal.Models.Order. Значение имени должно быть разделено запятой список имен свойств внешнего ключа.
Привет,
Гвидо