代码之家  ›  专栏  ›  技术社区  ›  Dimitri

泛型插入多对多(实体框架)

  •  0
  • Dimitri  · 技术社区  · 6 年前

    以下是更多(简化)信息: 产品实体:

    public class Product : BaseEntity
    {
        public string ProductName { get; set; }
    
        public virtual ICollection<Supplier> Suppliers { get; set; }
    
        ... others
    }
    

     public class Supplier:BaseEntity
    {
    
       public string SupplierName { get; set; }
    
       public virtual ICollection<Product> Products { get; set; }
    
        ... others
    }
    

    我有一个ProductSupplier表,其中包含使用Fluent API的SupplierId&ProductId。 在这种情况下,我还可以使用我的通用插件吗?如果是的话,我是怎么做的?我做错了什么?为什么我从数据库得到的供应商会被重新插入?

    谢谢大家的反馈! 亲切的问候

    更新: THIS POST

    下周我会看一看,因为我必须实现其他功能。同时,您可以随意添加您的2项:)

    这是我的通用插入方法:

      public static bool Insert<T>(T item) where T: class // here we specify that the <T> object is of type 'class'
        {
            using (ApplicationDbContext ctx = new ApplicationDbContext())
            {                
                    ctx.Database.Log = (dbLog => logger.Debug(dbLog));
    
                    ctx.Set<T>().Add(item);
                    ctx.SaveChanges();
                    return true;                              
            }
        }
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   Dimitri    6 年前

    我已经尝试了好几种方法,但到目前为止只有一种有效,所以我将继续使用这一种方法,但请随时发布您(更好的)建议,以便我可以改进当前的解决方案。我所做的很简单,我很确定一定有其他的方法,但目前还不知道。每当我创建新实体时,在执行任何插入/更新之前,我都会获取相关实体(如果它们存在)并将它们附加到要插入的实体,如果它们不存在,则实体将为我插入它们。

    希望这对任何人都有帮助。 亲切的问候