Ejemplo n.º 1
0
        public void delete(Book book)
        {
            using (SqlConnection conn = DBAccess.getConnection())
            {
                DataContext db = new DataContext(conn);
                db.Transaction = db.Connection.BeginTransaction();

                try
                {
                    dbBook dBook = (from d in db.GetTable <dbBook>() where d.id == book.id select d).First();
                    dBook.deleted = 1;
                    db.SubmitChanges();
                    db.Transaction.Commit();
                }
                finally
                {
                    db.Transaction.Rollback();
                }
            }

            foreach (dbBook b in m_EBook)
            {
                if (b.id == book.id)
                {
                    m_EBook.Remove(b);
                    m_EBookDeleted.Add(b);
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        public Book add(string name, int count, float price, Author[] authors, Genre genre)
        {
            using (SqlConnection conn = DBAccess.getConnection())
            {
                DataContext db = new DataContext(conn);
                db.Transaction = db.Connection.BeginTransaction();

                try
                {
                    dbBook nb = new dbBook();
                    nb.name     = name;
                    nb.count    = count;
                    nb.price    = price;
                    nb.genre_id = genre.id;
                    nb.genre    = m_Genres.getForID(nb.genre_id);

                    db.GetTable <dbBook>().InsertOnSubmit(nb);
                    db.SubmitChanges();

                    List <int> aIDs = new List <int>();
                    Table <dbAuthorBookLink> linkTbl = db.GetTable <dbAuthorBookLink>();
                    foreach (Author a in authors)
                    {
                        dbAuthorBookLink nl = new dbAuthorBookLink();
                        nl.book_id   = nb.id;
                        nl.author_id = a.id;
                        linkTbl.InsertOnSubmit(nl);
                        aIDs.Add(a.id);
                    }
                    nb.authors = m_Authors.getForIDs(aIDs);
                    db.SubmitChanges();

                    m_EBook.Add(nb);
                    m_LinkToAuthor.Add(nb.id, aIDs);

                    db.Transaction.Commit();

                    return((Book)nb);
                }
                catch (Exception e)
                {
                    db.Transaction.Rollback();
                    throw e;
                }
            }
        }
Ejemplo n.º 3
0
        public void save(Book book)
        {
            using (SqlConnection conn = DBAccess.getConnection())
            {
                DataContext db = new DataContext(conn);
                db.Transaction = db.Connection.BeginTransaction();

                try
                {
                    dbBook ub = (from b in db.GetTable <dbBook>() where b.id == book.id select b).First();
                    ub.name     = book.name;
                    ub.count    = book.count;
                    ub.price    = book.price;
                    ub.genre_id = book.genre.id;
                    ub.genre    = m_Genres.getForID(ub.genre_id);

                    Table <dbAuthorBookLink> link_table = db.GetTable <dbAuthorBookLink>();
                    var del_links = from l in link_table where l.book_id == book.id select l;
                    foreach (var del_item in del_links)
                    {
                        link_table.DeleteOnSubmit(del_item);
                    }

                    List <int> aIDs = new List <int>();
                    Func <int, int, dbAuthorBookLink> link_builder =
                        delegate(int author_id, int book_id)
                    {
                        dbAuthorBookLink newLink = new dbAuthorBookLink();
                        newLink.book_id   = book_id;
                        newLink.author_id = author_id;
                        return(newLink);
                    };
                    foreach (Author a in book.authors)
                    {
                        aIDs.Add(a.id);
                        link_table.InsertOnSubmit(link_builder(a.id, ub.id));
                    }
                    ub.authors = m_Authors.getForIDs(aIDs);

                    db.SubmitChanges();

                    int indx = m_EBook.FindIndex(x => x.id == book.id);
                    if (indx == -1)
                    {
                        m_EBook.Add(ub);
                    }
                    else
                    {
                        m_EBook[indx] = ub;
                    }

                    if (m_LinkToAuthor.ContainsKey(ub.id))
                    {
                        m_LinkToAuthor[ub.id] = aIDs;
                    }
                    else
                    {
                        m_LinkToAuthor.Add(ub.id, aIDs);
                    }

                    db.Transaction.Commit();
                }
                catch (Exception)
                {
                    db.Transaction.Rollback();
                }
            }
        }