-1
我有一個表只有兩列聯合主鍵如何插入/工作實體框架的存儲庫模式單位聯合主鍵
表名刪除記錄: ProductByUser
列1:產品編號(FK價到產品表)。
第2欄:用戶ID(FK參考。對用戶表)
附加信息:在EDMX也是我不能夠查看此表,但它表明產品&用戶表之間的直接關係。
我知道如何刪除或插入記錄到這張表中。由於我不能直接創建此表的一個對象。所以請好好指導我一樣。
我有一個表只有兩列聯合主鍵如何插入/工作實體框架的存儲庫模式單位聯合主鍵
表名刪除記錄: ProductByUser
列1:產品編號(FK價到產品表)。
第2欄:用戶ID(FK參考。對用戶表)
附加信息:在EDMX也是我不能夠查看此表,但它表明產品&用戶表之間的直接關係。
我知道如何刪除或插入記錄到這張表中。由於我不能直接創建此表的一個對象。所以請好好指導我一樣。
終於得到了出路,希望這將幫助一些一個在未來,
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));
試試這個:
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);
}
感謝大學回答,我試圖這樣做,但我得到以下錯誤。附加信息:實體類型ProductByUser不是模型的一部分上下文。 –
您是否將每個實體映射到一個表格?例如,對於ProductByUser,您需要:modelBuilder.Entity()。ToTable(「ProductByUser」); –
univ
你介意分享這三個實體的實體配置代碼嗎? – univ