2010-08-14 19 views
8

Với lớp POCO sau:ước đặt tên trong tạo ra nhiều-nhiều bảng sử dụng mã EF4 CTP4 đầu tiên tiếp cận

public class Certification { 
    public int Id { get; set; } 
    public virtual ICollection<Employee> CertifiedEmployees { get; set; } 
} 

public class Employee { 
    public int Id { get; set; } 
    public virtual ICollection<Certification> Certifications { get; set; } 
} 

Tạo mô hình cơ sở dữ liệu sử dụng mã tiếp cận EF4 CTP4 đầu tiên không tạo ra các bảng đường giao nhau mong muốn:

CREATE TABLE [dbo].[Certifications_CertifiedEmployees](
[Certifications_Id] [int] NOT NULL, 
[CertifiedEmployees_Id] [int] NOT NULL, 
    ... 

Tuy nhiên, tên bảng và tên cột không lý tưởng vì chúng được tạo từ tên thuộc tính lớp được liên kết. Tôi thà có:

CREATE TABLE [dbo].[Employees_Certifications](
[Employee_Id] [int] NOT NULL, 
[Certification_Id] [int] NOT NULL, 
    ... 

Có ai biết nếu nó có thể thay đổi các tên cột được tạo ra trong kịch bản này, và tùy ý cũng thay đổi tên bảng để Người lao động là trước khi Giấy chứng nhận?

Cảm ơn, Gary

Trả lời

7

tôi đã sử dụng các API thông thạo để sửa đổi các bảng đường giao nhau tạo:

modelBuilder.Entity<Employee>() 
    .HasMany(e => e.Certifications) 
    .WithMany(c => c.Employees) 
    .Map("Employees_Certifications", (e, c) => new { 
     Employee_Id = e.Id, 
     Certification_Id = c.Id }); 
+0

Cảm ơn câu trả lời hữu ích này, nhưng bạn có thể cho tôi biết cách thay đổi bảng được tạo này không, ví dụ: thêm cột bổ sung? –

8

Bất cứ ai cũng vấp phải này ngay bây giờ và sử dụng một phiên bản mới hơn của EF có thể cần phải thay đổi phần cuối @gxclarke trả lời:

.Map(
     m => { 
      m.MapLeftKey("Employee_Id"); 
      m.MapRightKey("Certification_Id"); 
      m.ToTable("Employees_Certifications"); 
     } 
    ); 

Có vẻ như các thông số phương pháp đã thay đổi để chỉ chấp nhận hành động chứ không phải tên bảng.

+0

Cảm ơn câu trả lời này. Không nhất thiết phải dễ dàng cập nhật sự giúp đỡ của EF trực tuyến với số lượng khuôn khổ đã thay đổi trong vài năm qua. –

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