5

Tôi đã làm điều này trước đây, nhưng vì một lý do nào đó không thể làm cho nó hoạt động trong EF5.Mã EF5 Đầu Nhiều Nhiều với Di cư

Thông thường nó chỉ tự động nhặt khi tôi có nhiều đối với nhiều mối quan hệ như thế này ...

public class Beer 
{ 
    public int Id { get; set; } 
    public virtual ICollection<Restaurant> Restaurants { get; set; } 
} 

public class Restaurant 
{ 
    public int Id { get; set; } 
    public virtual ICollection<Beer> Beers { get; set; } 
} 

Tôi muốn một bảng RestaurantsBeers hoặc bất cứ điều gì chỉ với RestaurantId và BeerId.

Khi tôi tạo nó bằng cách sử dụng Mã thông thường Cách đầu tiên bằng cách chỉ chạy ứng dụng hoạt động.

EF Working

Mặc dù di chuyển, nó sẽ không tạo bảng đó.

EF Not working

Tôi chạy Enable-Migrations sau đó Add-Migration FirstDb và cuối cùng Update-Database ... Không xúc xắc ...

Cũng cố gắng này ...

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Beer>() 
      .HasMany(b => b.Restaurants) 
      .WithMany(a => a.Beers) 
      .Map(m => m.MapLeftKey("BeerId") 
          .MapRightKey("RestaurantId") 
          .ToTable("BeersRestaurants")); 
    } 
+0

nghĩ rằng bạn cần phải sử dụng thuộc tính ForeignKey trên quan hệ của bạn, điều này sau đó sẽ nhận được nhiều đến nhiều mối quan hệ vv. Tôi đã luôn luôn sử dụng thuộc tính đó và không bao giờ chạy vào vấn đề anyway. – davethecoder

Trả lời

3

Migrations để tạo ra một mối quan hệ M2M mới chưa được hỗ trợ trong EF5.0RC theo kinh nghiệm của tôi đang cố gắng theo dõi cùng một vấn đề. Vì vậy, tại sao nó sẽ làm việc trên việc tạo DB tiêu chuẩn nhưng không hoạt động với các tính năng Di chuyển. Bạn có thể xuất SQL tạo ra từ mã khởi tạo cơ sở dữ liệu đầu tiên của mã chuẩn và chạy nó theo cách thủ công trong quá trình di chuyển ngay bây giờ.

Điều này cần được giải quyết khi EF5.0 đi RTM nhưng hiện tại chúng tôi phải đợi.

+0

Cảm ơn, đó là điều tốt để biết! – jcreamer898

+0

Cập nhật cho bất kỳ ai đọc nội dung này. EF 5 Code First Migrations hỗ trợ định nghĩa M2M theo cách này. –

+0

Như tôi đã nói, nó đã được giải quyết trước khi phát hành RTM. Vì vậy, bây giờ hoạt động, chính xác như câu trả lời đã nêu. – VulgarBinary

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