2015-08-19 2 views
0

Я пытаюсь установить внешний ключ для 2 классов с использованием FluentAPI и путать путаницу на пути его реализации.Внешний ключ с Fluent API - Code First

ApplicationUser использует модель ASP.NET Идентичность и имеет UserId в виде строки

public class ApplicationUser : IdentityUser 
{ 
    public virtual List<UserProduct> Orders { get; set; } 
} 

Product, который имеет составной ключ на колонках ProductID и ProductCategoryID

public class Product 
{ 
    public int ProductID { get; set; } 
    public string ProductCategoryID { get; set; } 

    public virtual List<UserProduct> Orders { get; set; } 

    ... 
} 

и другой класс UserProduct, который будет иметь многочастичных to-many между ApplicationUser и Product стол

public partial class UserProduct 
{ 
    public string UserId { get; set; } 

    public int ProductID { get; set; } 
    public string ProductCategoryID { get; set; } 

    public virtual ApplicationUser User { get; set; } 

    public virtual Product Product { get; set; } 
} 

Код FluentAPI выглядит

modelBuilder.Entity<Product>().Property(t => t.ProductID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
modelBuilder.Entity<Product>().HasKey(x => new { x.ProductID, x.ProductCategoryID }); 

modelBuilder.Entity<UserProduct>().HasKey(x => new {x.UserId, x.ProductID, x.ProductCategoryID}); 

Как установить внешний ключ отношения UserProduct с ApplicationUser и Product?

+0

эта ссылка может быть полезно: http://stackoverflow.com/questions/29831729/asp-net-mvc-many-to-many-relationship-using-my-own-table – Iraj

ответ

1

Вы можете добавить id-свойство (например, OrderId) в класс UserProduct и использовать этот код для подключения объектов по внешнему ключу.

modelBuilder.Entity<UserProduct>() 
      .HasRequired(x => x.User) 
      .WithMany(u => u.Orders) 
      .HasForeignKey(x => x.OrderId);