Linq-To-SQL Invalid Cast при вставке, а не при обновлении - PullRequest
1 голос
/ 15 июня 2009

Эй, ребята, у меня странное время с Linq-To-SQL

Я создаю систему сообщений, которая позволяет людям создавать сообщения и прикреплять их к нескольким объектам. База данных для этого - это таблица, в которой есть сами посты (идентификатор, сообщение и т. Д.) И таблица ссылок, в которой хранятся записи, к которым прикреплен пост.

странная вещь, которую я испытываю, заключается в следующем. Когда я извлекаю объект из базы данных (используя Linq-To-SQL), изменяю некоторые данные и отправляю их снова, у меня не возникает никаких проблем. Тем не менее, когда я пытаюсь создать новый, я получаю исключение в методе Submitchanges в тексте данных: указанное преобразование недопустимо.

Я искал в Интернете, и в основном это связано с некоторыми изменениями в отображении, но это не должно быть так, как я могу обновлять без проблем.

T_PostIt np = new T_PostIt();
                np.CreatedOn = DateTime.Now;
                np.CreatedBy = Request.ServerVariables["REMOTE_USER"].ToString();
                np.MarkedForDeletion = false;
                np.Message = txtNewPostitMessage.Text;
                np.ModifiedBy = Request.ServerVariables["REMOTE_USER"].ToString();                    
                foreach (int i in ServerIds)
                {
                    T_PostIt_Link pil = new T_PostIt_Link();
                    pil.LinkType = 'S';
                    pil.LinkID = i;
                    pil.MarkedForDeletion = false;
                    np.T_PostIt_Links.Add(pil);        
                }
                dc.T_PostIts.InsertOnSubmit(np);
                dc.SubmitChanges();

Я использую приведенный выше код и не могу понять, что я делаю неправильно.

помочь кому-нибудь?

1 Ответ

0 голосов
/ 15 июня 2009

Вы пытались обновить свойства по одному, а затем сохранить изменения обратно в базу данных? Может случиться так, что обновление сущности завершится неудачно только тогда, когда изменилось одно конкретное значение. Если я могу догадаться, возможно, значение CreatedOn не может быть приведено к действительному DateTime в базе данных (из-за настроек культуры). Это объясняет, почему обновление идет нормально - вы не меняете значение CreatedOn здесь. Вы делаете, однако, при вставке новой сущности.

Редактировать: возможно это проблема, с которой вы столкнулись. Кроме того, обязательно прочитайте эту ветку , где автор темы, в конце концов, указывает на первую ветку, в которой упоминается, что в Linq2Sql это ошибка аппарата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...