guidArr 是一个guid字符串数组,对应LibGuid字段;newAlbId 对应 AlbumId字段 
在数据库里LibGuid,AlbumId 是组合主键怎么样插入不重复的数据?   谢谢
        /// <summary>
        /// 专辑--文档添加
        /// 被引用:AdminController.LibIndex:Post
        /// </summary>
        /// <param name="guidArr">文章Guid数组</param>
        /// <param name="newAlbId">专辑ID</param>
        public static void DocAddToAlb(string[] guidArr, int newAlbId)
        {
            using (var db = new WEBVODEntities())
            {
                for (int i = 0; i < guidArr.Length; i++)
                {
                    LibAlbumDoc albumDoc = new LibAlbumDoc();
                    albumDoc.LibGuid = guidArr[i];
                    albumDoc.AlbumId = newAlbId;
                    albumDoc.PubDate = DateTime.Now;
                    albumDoc.LoginName = "admin";          //!!!用户名,以后要修改的。
                    db.LibAlbumDoc.AddObject(albumDoc);
                }
                db.SaveChanges();
            }        }

解决方案 »

  1.   

            /// <summary>
            /// 专辑--文档添加
            /// 被引用:AdminController.LibIndex:Post
            /// </summary>
            /// <param name="guidArr">文章Guid数组</param>
            /// <param name="newAlbId">专辑ID</param>
            public static void DocAddToAlb(string[] guidArr, int newAlbId)
            {
                using (var db = new WEBVODEntities())
                {
                    
                    //1.求出存在guid数组
                    string[] existArr = db.LibAlbumDoc.Where(i => i.AlbumId == newAlbId).Where(i => 
    guidArr.Contains(i.LibGuid)).Select(i => i.LibGuid).ToArray();                string[] insertArr = new string[guidArr.Length - existArr.Length];                //2.需要插入的数组 = 提交的数组 -  存在guid数组
                    //??下边好像不能直接这么相减,该怎么写
                    insertArr = guidArr - existArr;                for (int i = 0; i < insertArr.Length; i++)
                    {
                        LibAlbumDoc albumDoc = new LibAlbumDoc();
                        albumDoc.LibGuid = insertArr[i];
                        albumDoc.AlbumId = newAlbId;
                        albumDoc.PubDate = DateTime.Now;
                        albumDoc.LoginName = "admin";          //!!!用户名,以后要修改的。
                        db.LibAlbumDoc.AddObject(albumDoc);
                    }
                    db.SaveChanges();
                }        }
      

  2.   

    我写好了,但是觉得方法有些笨,有没有简单点的        /// <summary>
            /// 专辑--文档添加
            /// 被引用:AdminController.LibIndex:Post
            /// </summary>
            /// <param name="guidArr">文章Guid数组</param>
            /// <param name="newAlbId">专辑ID</param>
            public static void DocAddToAlb(string[] guidArr, int newAlbId)
            {
                using (var db = new WEBVODEntities())
                {
                    
                    //1.求出存在guid数组
                    string[] existArr = db.LibAlbumDoc.Where(i => i.AlbumId == newAlbId).Where(i => 
    guidArr.Contains(i.LibGuid)).Select(i => i.LibGuid).ToArray();                string[] insertArr = new string[guidArr.Length - existArr.Length];                int x=0;
                    //2.遍历提交数组guidArr,existArr如果不包含,就加入到insertArr中
                    for (int i = 0; i < guidArr.Length; i++)
                    {
                        if  (!existArr.Contains(guidArr[i]))
                        {
                            insertArr[x] = guidArr[i];
                            x++;
                            
                        }
     
                    }                for (int i = 0; i < insertArr.Length; i++)
                    {
                        LibAlbumDoc albumDoc = new LibAlbumDoc();
                        albumDoc.LibGuid = insertArr[i];
                        albumDoc.AlbumId = newAlbId;
                        albumDoc.PubDate = DateTime.Now;
                        albumDoc.LoginName = "admin";          //!!!用户名,以后要修改的。
                        db.LibAlbumDoc.AddObject(albumDoc);
                    }
                    db.SaveChanges();
                }        }
      

  3.   

    不知道你用的什么数据库,可以在sql上做点文章。
    1.确保插入的数据没重复数据,linq解决
    2.插入数据库的时候不用insert,用merge into
      

  4.   


    我用的是 sql2008R21. linq解决,该怎么样做?2. merge into 是什么意思?   能解释下吗?
      

  5.   


    merge into 是oracle的一个sql语法,可以设定相同字段就更新(不操作也行)不相同就执行插入操作
    sql server05 我记得是没这语法的,08不太清楚。
    我意思是如果觉得在代码里面处理感觉麻烦的话,有些操作可以移植到sql上来做,会很方便。
      

  6.   

    merge into 语法,
    ==》
    sql 中没有这个语法吧