-1

我有一個表只有兩列聯合主鍵如何插入/工作實體框架的存儲庫模式單位聯合主鍵

表名刪除記錄: ProductByUser

列1:產品編號(FK價到產品表)。

第2欄:用戶ID(FK參考。對用戶表)

附加信息:在EDMX也是我不能夠查看此表,但它表明產品&用戶表之間的直接關係。

我知道如何刪除或插入記錄到這張表中。由於我不能直接創建此表的一個對象。所以請好好指導我一樣。

回答

0

終於得到了出路,希望這將幫助一些一個在未來,

void Insert(Product product, int intUserId) 
    { 
    _unitofWork.Db.Entry(product).Collection(i => i.Users).Load(); 

     UserRepository userRepo = new UserRepository(_unitofWork); 

    product.Users.Add(userRepo.GetAll().FirstOrDefault(U => U.UserID == intUserId)); 

    } 

刪除

product.Users.Remove(userRepo.GetAll().FirstOrDefault(U => U.UserID == intUserId)); 
0

試試這個:

public class ProductByUser // Many to many table implemented as entity 
{ 
    public int ProductId { get; set; } 
    public int UserId { get; set; } 

    public virtual ICollection<Product> Products { get; set; } 
    public virtual ICollection<User> Users { get; set; } 
} 


protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<ProductByUser>() 
     .HasKey(c => new { c.ProductId , c.UserId }); 

    modelBuilder.Entity<Product>() 
     .HasMany(c => c.ProductUsers) 
     .WithRequired() 
     .HasForeignKey(c => c.ProductId); 

    modelBuilder.Entity<User>() 
     .HasMany(c => c.ProductUsers) 
     .WithRequired() 
     .HasForeignKey(c => c.UserId); 
} 
+0

感謝大學回答,我試圖這樣做,但我得到以下錯誤。附加信息:實體類型ProductByUser不是模型的一部分上下文。 –

+0

您是否將每個實體映射到一個表格?例如,對於ProductByUser,您需要:modelBuilder.Entity ()。ToTable(「ProductByUser」); – univ

+0

你介意分享這三個實體的實體配置代碼嗎? – univ

相關問題