views:

51

answers:

1

Hello!

I have a little / weird behaviour here and Im looking over internet and SO and I didn't find a response.

I have to admit that this is my first time using databases, I know how to use them with SQL but never used it actually.

Anyway, I have a problem with my app inserting data, I just created a very simple project for testing that and no solution yet.

I have an example database with Sql Server

Id - int (identity primary key) Name - nchar(10) (not null)

The table is called "Person", simple as pie.

I have this:

static void Main(string[] args)
{
    var db = new ExampleDBDataContext {Log = Console.Out};

    var jesus = new Person {Name = "Jesus"};

    db.Persons.InsertOnSubmit(jesus);
    db.SubmitChanges();

    var query = from person in db.Persons select person;

    foreach (var p in query)
    {
        Console.WriteLine(p.Name);
    }
}

As you can see, nothing extrange.

It show Jesus in the console. But if you see the table data, there is no data, just empty. I comment the object creation and insertion and the foreach doesn't print a thing (normal, there is no data in the database)

The weird thing is that I created a row in the database manually and the Id was 2 and no 1 (Was the linq really playing with the database but it didn't create the row?)

There is the log:

INSERT INTO [dbo].Person

VALUES (@p0)

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]

-- @p0: Input NChar (Size = 10; Prec = 0; Scale = 0) [Jesus]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.4926

SELECT [t0].[Id], [t0].[Name] FROM [dbo].[Person] AS [t0]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.4926

I am really confused, All the blogs / books use this kind of snippet to insert an element to a database.

Thank you for helping.

+3  A: 

First; do you have a TransactionScope that spans this, that you haven't committed.

However, more liktely: is this a database file that you are deploying with the system (rather than a separate database server)? If so, every time you hit "build" etc, it copies the version from your solution folder into the build output (bin/debug or bin/release).

Look in the build output copy; see if that has been updated.

Marc Gravell
This is especially likely if you are using SQLExpress "user-instance" databases.
pblasucci
You're the one. As I said, I have practiced with oracle and mysql in my course but I got confused with all the options Sql Server offer (mdf, sdf, and one inside the server I think), Im going with SQL server CE because I want some embedded DB with LINQ support. I think that I have to open and use the lib that is inside of the bin, weird but it's the solution. thank you.
Jesus Rodriguez