Solved

Linq to SQL Query for multiple rows

Posted on 2008-11-01
6
2,412 Views
Last Modified: 2013-12-17
Hello,

We have this data entry page where user enters data for the following fields

BookName
ex. asp.net programming

ISBN
ex. 12345

Authors (enter comma seperated)
author1, author2, author3


When the page is submitted, we want the above data to be stored in two tables

table1 - bookmaster
columns - bookid (identity), bookname, isbn
ex.  234, asp.net programming, 12345

table2 - bookauthors
columns - id (identity), bookid, authorname
ex.
1, 234, author1
2, 234, author2
3, 234, author3


Please let me know how to write the query for the above in Linq to SQL (C#).
Note. User enters authors name comma seperated.

Thanks in advance.

0
Comment
Question by:sunseshasai
  • 3
6 Comments
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 22859110
Hi sunseshasai;

What is the structure of the tables in the database?

Fernando
0
 

Author Comment

by:sunseshasai
ID: 22859522
Hello FernandoSoto:
Here it is,

CREATE TABLE [dbo].[BookMaster](
      [BookID] [int] NOT NULL,
      [BookName] [varchar](100) NOT NULL,
      [ISBN] [varchar](50) NULL,
 CONSTRAINT [PK_BookMaster] PRIMARY KEY CLUSTERED
(
      [BookID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


CREATE TABLE [dbo].[BookAuthors](
      [ID] [int] IDENTITY(1,1) NOT NULL,
      [BookID] [int] NOT NULL,
      [AuthorName] [varchar](100) NOT NULL,
 CONSTRAINT [PK_BookAuthors] PRIMARY KEY CLUSTERED
(
      [ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


ALTER TABLE [dbo].[BookAuthors]  WITH CHECK ADD  CONSTRAINT [FK_BookAuthors_BookMaster] FOREIGN KEY([BookID])
REFERENCES [dbo].[BookMaster] ([BookID])
0
 
LVL 63

Accepted Solution

by:
Fernando Soto earned 250 total points
ID: 22860413
Hi sunseshasai;

This will do what you need.

Fernando

using System.Data.Linq;
 
 
// Instantiate the DataContext
BooksDataContext bookDB = new BooksDataContext();
// Get the BookMaster table which has a link to Authors
Table<BookMaster> books = bookDB.GetTable<BookMaster>();
// Separate the authors on the comma
String[] authors = txtAuthors.Text.Split(',');
// Instantiate a new book to be inserted
BookMaster newBook = new BookMaster();
// Fill in the fields of the BookMaster table using text boxes, can be any string variable
newBook.BookName = txtBookName.Text.Trim();
newBook.ISBN = txtISBN.Text.Trim();
// Create a Author record for each author and add it to the Entity Set of the newBook
foreach (String author in authors)
{               
    BookAuthors bAuthor = new BookAuthors();
    bAuthor.AuthorName = author.Trim();
    newBook.BookAuthors.Add(bAuthor);
}
// Insert book and authors into the table and submit on changes
books.InsertOnSubmit(newBook);
// Submit changes to the database
bookDB.SubmitChanges();

Open in new window

0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 22868089
Did this answer your question?
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

810 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