Khi nhìn vào câu hỏi và câu trả lời trên trang web này và đọc một số các hướng dẫn của Google xếp hạng hàng đầu trên xây dựng Quy tắc đầu tiên tôi thường xuyên xem các mô hình sau ...Điểm tạo thuộc tính khóa ngoài khi sử dụng Mã khung thực thể đầu tiên là gì?
public class Category
{
public Category()
{
Products = new Collection<Product>();
}
public Guid ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class Product
{
public Guid ID { get; set; }
public string Name { get; set; }
public DateTime DateAdded { get; set; }
public Guid CategoryID { get; set; } // Seemingly redundant property
public virtual Category Category { get; set; }
}
Khi tìm kiếm Mã đầu tiên hướng dẫn sau hai trang đưa ra sử dụng mà cùng một khuôn mẫu này:
http://www.codeproject.com/Articles/327945/Architecture-Guide-ASP-NET-MVC3-Entity-Framework-C
Câu hỏi: Vậy điểm của thuộc tính khóa ngoài trên đối tượng Code First C# là gì? Trong ví dụ trên, bạn có thể bỏ qua CategoryID
từ lớp Product
và mọi thứ sẽ hoạt động tốt. Khoá ngoài Category_ID
sẽ vẫn được tạo trong cơ sở dữ liệu. Điều duy nhất tôi có thể nghĩ là mọi người có thể muốn xác định liệu mối quan hệ là tùy chọn sử dụng các loại nullable thay vì API thông thạo, nhưng tôi nghĩ rằng nó thực sự gây nhầm lẫn để có cả thuộc tính Category
và CategoryID
.
Vì vậy, trước khi tôi đi xung quanh và loại bỏ tất cả các thuộc tính khóa ngoại của tôi, có bất kỳ điều gì tôi thiếu ở đây không? Điểm của việc này là gì?
Cảm ơn!
Tôi nghĩ rằng làm cho nó một 'Guid' làm? một dfference. Một số DataAnnotations có thể áp dụng. –
Có, tôi đã đề cập rằng trong câu hỏi của tôi ... bất cứ điều gì không thể được thực hiện bằng cách sử dụng API thông thạo mặc dù? Có vẻ khá xấu để có hai thuộc tính bản sao cơ bản khi bạn không phải. –
Có thể trùng lặp của [Mã số đầu tiên: Các hiệp hội độc lập so với các hiệp hội khóa nước ngoài?] (Https://stackoverflow.com/questions/5281974/code-first-independent-associations-vs-foreign-key-associations) –