Search code examples
c#sqllinqconnection-stringdatacontext

C# Linq to SQL connection string (newbie)


i am a new linq to sql learner and this is my very first attempt to create a data viewer program. The idea is simple, i'd like to create a software that is able to view content of a table in a database. That's it.

I got an early problem here already and i have seen many tutes and articles online but I still cant fix the bug.

Here is my code:

    static void Main(string[] args)
    {
        string cs = "Data Source=localhost;Initial Catalog=somedb;Integrated Security=SSPI;";

        var db = new DataClasses1DataContext(cs);
        db.Connection.Open();

        foreach (var b in db.Mapping.GetTables())
            Console.WriteLine(b.TableName);

        Console.ReadKey(true);
    }

When I tried to check db.connection.equals(null); it returns false, so i thought i have connected successfully to the database since there is no error at all. But the code above doesn't print anything out to the screen.

I kind of lost and don't know what's going on here. Does anyone know what is going wrong here?


Solution

  • Ok, let's look at some of these lines:


    var db = new DataClasses1DataContext(cs);
    

    This is a perfectly normal and fine call to a constructor. Since DataContext implements IDisposable, when you are using it for real, consider using the using statement.

    using (var db = new DataClasses1DataContext(cs))
    {
      // do stuff with db here
    } // when leaving the block, db is disposed - even in the case of an exception.
    

    db.Connection.Open();
    

    Don't do this. DataContext will open and close the connection when it needs to.


    foreach (var b in db.Mapping.GetTables())
      Console.WriteLine(b.TableName); 
    

    Hmm, maybe there are no tables in the mapping. Did you drag a table onto the designer surface from the server explorer?

    Most people would query a table instead of perusing the mappings. Consider this code instead:

    foreach (var customer in db.Customer.Take(10))
    {
      Console.WriteLine(customer.Name); 
    }
    

    Here's a video showing how to drag a table onto the designer surface from the server explorer:

    http://www.youtube.com/watch?v=z9L11qrw9gk