Tôi có hai đối tượng sau đây (trong số nhiều, nhưng những cho tôi vấn đề)EF 4.1 Mã Đầu tiên chính nước ngoài cho biết thêm thêm cột
public class StartPoint
{
public int StartPointId { get; set; }
public string Description { get; set; }
public int StartPointNumber { get; set; }
public int StartAreaId { get; set; }
public StartArea StartArea { get; set; }
}
và
public class StartArea
{
public int StartAreaId { get; set; }
public string Description { get; set; }
public ICollection<StartPoint> StartPoints { get; set; }
}
Khi cho phép EF để tạo ra của tôi cơ sở dữ liệu nó phàn nàn rằng tôi cần phải tắt chức năng xóa tầng vì nhiều đường dẫn mà tôi đã thực hiện như sau.
modelBuilder.Entity<StartPoint>()
.HasRequired(x => x.StartArea)
.WithMany()
.HasForeignKey(x => x.StartAreaId)
.WillCascadeOnDelete(false);
Vấn đề là, khi cơ sở dữ liệu được tạo ra tôi nhận được hai phím nước ngoài, một được gọi là StartAreaId, như tôi mong đợi, và người kia là StartArea_StartAreaId. Chỉ StartAreaId mới được sử dụng. Tại sao và làm cách nào để loại bỏ StartArea_StartAreaId. Nếu tôi loại bỏ HasForeignKey trong ngữ cảnh và loại bỏ StartAreaId khỏi thực thể, tôi nhận được nhiều cột StartArea_StartAreaId, như trong StartArea_StartAreaId và StartArea_StartAreaId1. Tôi cần phải làm gì để ngăn điều này xảy ra? Tôi chỉ muốn StartAreaId làm khóa ngoại.
Yup, tất nhiên, không biết tại sao tôi không nghĩ về điều này. Cảm ơn bạn. – Dirk
Cảm ơn Ladislav! Được hưởng nhiều câu trả lời của bạn bao gồm cả câu trả lời này. Chỉ có quan sát là, vấn đề này là gián đoạn (đồng nghiệp của tôi không bị buộc phải cung cấp bất cứ thứ gì trong WithMany, nhưng tôi phải làm. (Bạn xứng đáng được hưởng MVP trên EF :)) –