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();
} }
在数据库里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();
} }
/// 专辑--文档添加
/// 被引用: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();
} }
/// 专辑--文档添加
/// 被引用: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();
} }
1.确保插入的数据没重复数据,linq解决
2.插入数据库的时候不用insert,用merge into
我用的是 sql2008R21. linq解决,该怎么样做?2. merge into 是什么意思? 能解释下吗?
merge into 是oracle的一个sql语法,可以设定相同字段就更新(不操作也行)不相同就执行插入操作
sql server05 我记得是没这语法的,08不太清楚。
我意思是如果觉得在代码里面处理感觉麻烦的话,有些操作可以移植到sql上来做,会很方便。
==》
sql 中没有这个语法吧