【发布时间】:2011-07-29 09:50:14
【问题描述】:
我一直在寻找有关如何使用代码优先 EF 4.1 声明外键关系和其他约束的资源,但运气不佳。基本上我在代码中构建数据模型并使用 MVC3 来查询该模型。一切都通过 MVC 工作,这很棒(向微软致敬!)但现在我不希望它工作,因为我需要有数据模型约束。
例如,我有一个 Order 对象,它有大量的外部对象(表)属性。现在我可以创建一个 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 生成的 Patient 视图时遇到的错误:
错误信息
属性上的 ForeignKeyAttribute 类型上的“患者” 'PhysicianPortal.Models.Order' 不是 有效的。外键名称“父” 未在依赖类型上找到 'PhysicianPortal.Models.Order'。这 名称值应以逗号分隔 外键属性名称列表。
问候,
圭多
【问题讨论】:
标签: asp.net-mvc-3 ef-code-first entity-framework-4.1