Saving record in Subsonic 3 using Active Record

Posted by singfoom on Stack Overflow See other posts from Stack Overflow or by singfoom
Published on 2010-03-09T23:33:55Z Indexed on 2010/03/11 18:29 UTC
Read the original article Hit count: 659

I'm having trouble saving a record in Subsonic 3 using Active record. I've generated my objects using the DALs and tts and everything seems fine because the following test passes. I think that my connection string is correct or the generation wouldn't have succeeded.

[Test]
        public void TestSavingAnEmail()
        {
            Email testEmail = new Email();
            testEmail.EmailAddress = "[email protected]";
            testEmail.Subscribed = true;
            testEmail.Save();
            Assert.AreEqual(1, Email.All().Count());
        }

On the live side, the following code fails:

protected void btEmailSubmit_Click(object sender, EventArgs e)
        {
            Email email = new Email();
            email.EmailAddress = txtEmail.Text;
            email.Subscribed = chkSubscribe.Checked;
            email.Save();
        }

with a message of: Need to specify Values or a Select query to insert - can't go on! at the following line repo.Add(this,provider); line in my ActiveRecord.cs:

public void Add(IDataProvider provider){


            var key=KeyValue();
            if(key==null){
                var newKey=_repo.Add(this,provider);
                this.SetKeyValue(newKey);
            }else{
                _repo.Add(this,provider);
            }
            SetIsNew(false);
            OnSaved();
        }

Am I doing something horribly wrong here? The save and add methods have parameterless overloads that I thought were safe to use. Do I need to pass a provider? I've googled around for this for a while and was unable to come up with anything specific to my situation. Thanks in advance for any kind of answer.

© Stack Overflow or respective owner

Related posts about subsonic3

Related posts about subsonic-active-record