我一直在寻找有关如何使用代码优先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; }
}
这是我现在访问Patient的VS生成的视图时出现的错误:
错误信息
类型'PhysicianPortal.Models.Order'上属性'Patient'上的ForeignKeyAttribute无效。在从属类型“ PhysicianPortal.Models.Order”上找不到外键名称“ Parent”。Name值应该是用逗号分隔的外键属性名称列表。
问候,
圭多