Tôi đã tìm kiếm tài nguyên về cách khai báo mối quan hệ khóa ngoài và các ràng buộc khác bằng cách sử dụng mã EF 4.1 đầu tiên mà không gặp nhiều may mắn. Về cơ bản, tôi đang xây dựng mô hình dữ liệu bằng mã và sử dụng MVC3 để truy vấn mô hình đó. Mọi thứ hoạt động thông qua MVC, điều đó thật tuyệt vời (kudo đối với Microsoft!) Nhưng bây giờ tôi muốn nó KHÔNG hoạt động vì tôi cần phải có các ràng buộc về mô hình dữ liệu.
Ví dụ, tôi có một đối tượng Order có rất nhiều thuộc tính là các đối tượng bên ngoài (bảng). Ngay bây giờ tôi có thể tạo một Đơn hàng không có vấn đề gì, nhưng không thể thêm khóa ngoại hoặc các đối tượng bên ngoài. MVC3 thiết lập điều này không có vấn đề.
Tôi nhận ra rằng tôi chỉ có thể tự thêm các đối tượng trong lớp bộ điều khiển trước khi lưu, nhưng tôi muốn lệnh gọi đến DbContext.SaveChanges () không thành công nếu các mối quan hệ ràng buộc không được đáp ứng.
THÔNG TIN MỚI
Vì vậy, đặc biệt, tôi muốn một ngoại lệ xảy ra khi tôi cố gắng lưu một đối tượng Order mà không chỉ định đối tượng khách hàng. Đây dường như không phải là hành vi nếu tôi chỉ soạn các đối tượng như được mô tả trong hầu hết các tài liệu về Code First EF.
Mã mới nhất:
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; }
}
Đây là lỗi tôi gặp phải khi truy cập chế độ xem được tạo VS cho Bệnh nhân:
THÔNG BÁO LỖI
Thuộc tính ForeignKeyAttribute trên thuộc tính 'Bệnh nhân' trên loại 'PhysicianPortal.Models.Order' không hợp lệ. Không tìm thấy tên khóa ngoại 'Parent' trên loại phụ thuộc 'PhysicianPortal.Models.Order'. Giá trị Tên phải là danh sách các tên thuộc tính khóa ngoại được phân tách bằng dấu phẩy.
Trân trọng,
Guido