Solved

if record exists update else insert using LINQ

Posted on 2008-06-10
5
7,720 Views
Last Modified: 2013-11-11
I have an xml file that I parse and insert into the database. What I want to do is, if the records in the xml file already exist in the database I just want to update the database, If they don't exist I would like to insert them. I would like to do this as efficiently as possible either through LINQ and/or stored procedures, but can't find anything online. The xml file has IDs that correspond to database IDs.

Running ASP.NET 3.5 and MS Server 08

Thanks
0
Comment
Question by:idsnews
  • 2
  • 2
5 Comments
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 21754255
if you use SQL 2008, you should learn up the newly introduce MERGE statement:
http://www.builderau.com.au/program/sqlserver/soa/Using-SQL-Server-2008-s-MERGE-statement/0,339028455,339283059,00.htm
0
 

Author Comment

by:idsnews
ID: 21754385
Thanks, but from the looks of it the MERGE statement is only useful for merging tables. Whereas I need to merge a table with an XML document.
0
 
LVL 142

Assisted Solution

by:Guy Hengel [angelIII / a3]
Guy Hengel [angelIII / a3] earned 100 total points
ID: 21754438
with SQL Server, using XML means using OPENXML() function to get a table-valued output from XML input.
as from SQL 2005, you could also use the xml data type, and perform XQuery on that to again have "table" data.

once you have that, the MERGE can be brought into play ...
0
 
LVL 21

Accepted Solution

by:
naspinski earned 400 total points
ID: 21754567
If you want to use linq:
//instead of this foreach<int> you will do a foreach<XElement> or something else to run through your xml entries

//Also, you will obviously have to change my item class to what you want

foreach (int xmlID in xmlEntries)

{

    try

    {

        item i = (from p in db.items where p.itemID == xmlID select p).First();

        //it is present in the database -- now edit it

    }

    catch

    { 

        //it wasn't there, so insert it

    }

Open in new window

0
 

Author Closing Comment

by:idsnews
ID: 31465893
Thanks angelll for the MERGE solution but it seekemed a little over my head and the try catch with the LINQ was exactly what I was looking for because I was already parsing the XML file using linq and XElements
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now