2013-04-16 32 views
11

Tôi đang cố gắng tìm cú pháp chính xác để tạo một cơ sở dữ liệu với dữ liệu thử nghiệm. Tôi có một chìa khóa nước ngoài để bàn sản phẩm của tôi. Đó là thể loại. Tôi đã gieo cơ sở dữ liệu với các giá trị cho các danh mục, nhưng bị mắc kẹt về cách thêm mối quan hệ đó vào sản phẩm. Tôi đã thử cách này để không có kết quả.Tạo một cơ sở dữ liệu với khung thực thể mã đầu tiên - Cú pháp khóa ngoài

context.Categories.AddOrUpdate(x => x.Name, 
    new Category 
    { 
     Name = "Fruit" 
    }); 

context.Products.AddOrUpdate(x => x.Name, 
    new Product 
    { 
     Name = "Cherries", 
     Description = "Bing Cherries", 
     Measure = "Quart Box", 
     Price = 1.11M, 
     Category = context.Categories.FirstOrDefault(x => x.Name == "Fruit") 
    } 
}); 

Mọi người có thể chỉ cho tôi đúng hướng không?

+0

Vui lòng cung cấp lớp Sản phẩm. Trong lớp sản phẩm, bạn phải có trường khóa ngoài cho Danh mục (Category_id). Bạn có thể gán giá trị category_id đó. – Saanch

Trả lời

23

Tôi thấy rằng để hoàn thành khóa ngoại từ Danh mục là thực hiện lưu thay đổi đối với ngữ cảnh. Sau đó, tôi đã có thể truy vấn ngữ cảnh cho categoryId và lưu nó vào CategoryId trên sản phẩm.

context.Categories.AddOrUpdate(x => x.Name, 
     new Category 
     { 
      Name = "Fruit" 
     }); 

      context.SaveChanges(); 

      context.Product.AddOrUpdate(x => x.Name, 
      new Product { 
Name = "Cherries", 
Description = "Bing Cherries", 
Measure = "Quart Box", 
Price = 1.11M, 
CategoryId = context.Categories.FirstOrDefault(x => x.Name == "Fruit").Id 
} 
Các vấn đề liên quan