2016-03-18 11 views
13

Tôi đang làm việc trên ứng dụng ASP.NET MVC đầu tiên của cơ sở dữ liệu. Nhìn vào cơ sở dữ liệu các khóa ngoại là rất không nhất quán, về cơ bản chúng chỉ ở đó nếu nó được chỉ định trong các kịch bản lệnh SQL đã tạo ra các bảng. Trong hầu hết các trường hợp, họ không có ở đó.Làm mất chìa khóa nước ngoài trong cơ sở dữ liệu có ảnh hưởng đến sql được tạo ra bởi EF?

Tuy nhiên, tìm kiếm trong mô hình edmx, tôi có thể thấy rằng nó nhận thức được khóa ngoại nghĩa là nó đã xác định chính xác các thuộc tính điều hướng.

Câu hỏi của tôi là, các khóa ngoài bị thiếu trong cơ sở dữ liệu thực tế có ảnh hưởng đến sql được tạo bởi Entity Framework không? Bằng hiệu ứng tôi có nghĩa là tác động tiêu cực đến hiệu suất.

Tôi thực sự không thể hiểu được điều đó có quan trọng hay không.

Chỉ cần làm rõ, trong cơ sở dữ liệu Tôi đang mở rộng bảng và tìm khóa màu đỏ cho biết khóa ngoại. Tôi cũng đang tìm trong thư mục con: "Keys".

+0

Bạn đang sử dụng phiên bản EF nào? –

+0

@AndrewLoree EF 4.1 – DSF

Trả lời

5

Tác động tiêu cực đến hiệu suất.

Tôi có thể nghĩ đến hai hiệu ứng của sự hiện diện của khóa ngoại.

  1. A tiny negative impact on inserts and updates, vì các phím phải được kiểm tra. Tuy nhiên, so với mọi thứ khác diễn ra trong một vòng lặp cơ sở dữ liệu hoàn chỉnh, hiệu ứng này hoàn toàn không đáng kể. Tuyệt đối không có lý do gì để tránh sử dụng chúng. Nó sẽ không bao giờ bao giờ lớn hơn những lợi ích của tính toàn vẹn dữ liệu.
  2. Hiệu suất vượt trội khi các khóa ngoại được thiết lập với các lần xóa và cập nhật tầng.

Tóm lại, không có lý do gì để cố tình bỏ qua khóa ngoại.

Tất nhiên, di sản không thể luôn được hoàn tác qua đêm. Nếu có bất kỳ chỗ nào cho những thay đổi trong lược đồ cơ sở dữ liệu, tôi sẽ tìm nó. Nếu không, bạn có thể xem xét thêm các liên kết phổ biến theo cách thủ công vào mô hình edmx. Các liên kết này sẽ không bị xóa bằng cách cập nhật mô hình từ cơ sở dữ liệu.

1

Có, bạn cần những khóa ngoại đó.
Tôi không biết Khung thực thể, nhưng tôi biết một số máy chủ SQL.
Bạn có thể nhận được nhiều kế hoạch thực hiện tốt hơn nếu bạn có Khóa ngoại.
Kendra Little có video hay về khóa ngoại here.

Bạn cũng cần đảm bảo rằng chúng hoạt động và đáng tin cậy. Brent Ozar viết về điều đó here.

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