6

Tôi đã có các đối tượng sau trên EDMX tôi: -. alt textCó vấn đề nghiêm trọng với Entity Framework & Keys nước ngoài :(

Hai entites được tạo ra bởi Cập nhật mô hình từ cơ sở dữ liệu

Bây giờ , chú ý cách đất nước tôi có khóa chính sau đây: -

Tên & IsoCode

điều này là do mỗi quốc gia là UNIQUE trong hệ thống theo Tên và IsoCode.

Bây giờ, với các quốc gia của tôi ... nó tương tự. Primary Key là: -

Tên & countryID

Mỗi tiểu bang là duy nhất bởi tên và ở mỗi quốc gia.

Hiện tại, Khóa ngoại quốc cho các quốc gia là một Quốc gia. Đây là sql: -

ALTER TABLE [dbo].[States] WITH CHECK ADD 
     CONSTRAINT [FK_States_Countries] FOREIGN KEY([CountryId]) 
REFERENCES [dbo].[Countries] ([CountryId]) 
ON UPDATE CASCADE 
GO 

ALTER TABLE [dbo].[States] CHECK CONSTRAINT [FK_States_Countries] 
GO 

Những thứ khá đơn giản.

NHƯNG EntityFramework không thích nó :(Nó giả định rằng tôi cần phải kết nối với một số tính từ State thực cho cả hai thuộc tính khóa chính trong thực thể Country.

Có thể thêm một mối liên hệ giữa quốc gia và Nhà nước về Country.CountryId < -> State.CountryId ... như tôi đã ánh xạ trong DB của tôi

Cheers;)

+0

@Alex James: bạn có ở đây để giúp bạn không? –

+0

Yeap ... xem câu trả lời dưới đây! –

Trả lời

10

trong EF (3.5 và 4.0) FKS pHẢI trỏ đến tiểu phím?.

Nhưng bạn dường như đang cố gắng để trỏ đến một chính Candidate (tức là [nước]. [CountryID]

tôi biết rằng đây là một cái gì đó đội EF đang xem xét cho phiên bản tiếp theo mặc dù :)

Hope this helps

Alex

+0

Cảm ơn bạn Alex đã chọn câu hỏi của tôi. Tôi chân thành đánh giá cao nó :) Hình như tôi sẽ quay trở lại để làm cho danh tính của PK và thêm ràng buộc duy nhất. Doh :) luôn luôn đi trước một bước so với các bản dựng EF hiện tại ... :) Cảm ơn một lần nữa bạn đời - thực sự yêu sự giúp đỡ của bạn :) hãy tiếp tục! –

+4

Tôi đã xem các tài liệu thay đổi CTP5 và không thấy bất kỳ điều gì liên quan đến tài liệu này. Tính năng này vẫn đang được xem xét, hoặc trong đường ống, hay ...? Đây là một trở ngại thực sự cho việc lập bản đồ các cơ sở dữ liệu kế thừa. –

0

Đối với DB bình thường thích hợp, điều đầu tiên là khóa chính phải chỉ countryIDStateId trường - các trường Id chính cho mỗi bảng.

Và ss Tôi thấy từ mô tả Tên & IsoCodeTên & countryID nên thực sự phím độc đáo, không tiểu học.

Sau đó, mô hình lớp Nhà nước nên có một lĩnh vực:

public Country Country { get; set; } 

Bây giờ EF có ví dụ rất tốt và kể từ 4.3.1 + nó hỗ trợ đầy đủ Mã đầu tiên/DB mô hình đầu tiên, mà tôi nghĩ rằng sẽ dễ dàng giải quyết điều này. EF 5 có bản cập nhật tương thích hơn vì vậy tôi nghĩ rằng nó sẽ không là một vấn đề cho các công cụ DB cũ.

+0

Trừ khi tôi đã hiểu sai câu trả lời của bạn bằng cách nào đó - điều này hoàn toàn nằm ngoài điểm của câu hỏi. "Có thể thêm HIỆP HỘI giữa Quốc gia và Tiểu bang trên Quốc gia.CountryId <-> State.CountryId" là câu hỏi - như trong "Tôi có thể thêm liên kết vào một thứ khác ngoài khóa chính (khóa ứng viên trong trường hợp này) không " – tim

Các vấn đề liên quan