String or binary data would be truncated. The statement has been terminated

linq-to-sql

I have an insert statement before these updates:
On db.sumbitchanges the error is shown.

Topic top = (from t in db.Topics
                 where t.id == id
                 select t).SingleOrDefault();

top.lastpost = username + maxdate;


Category ca = (from c in db.Categories
             where c.categoryid == cat
             select c).SingleOrDefault();

ca.totaltopics = ca.totaltopics + 1;
ca.posts = ca.posts + 1;
ca.lastpost = username + maxdate;
db.SubmitChanges();     

Best Answer

It sounds like either top.lastpost or ca.lastpost (or both) doesn't have enough space on the db to hold username + maxdate.

Check how many characters the database fields allow and either change the field to allow more characters or reduce the length of the output - perhaps only storing username + maxdate.ToString("yyyy-MM-dd") or username + maxdate.ToString("yyyy-MM-dd HH:mm:ss")?