Проблема с LINQ в C # - PullRequest
2 голосов
/ 11 июня 2010

Я сталкиваюсь с проблемой при использовании LINQ в C #, я постоянно получаю сообщение "Указанное приведение неверно". Это то, что я пытаюсь сделать.

Я создаю класс, в котором объявляю все столбцы таблицы.

    [Table(Name="tbl_Aff")]
    public class Affiliate 
    {
        [Column]
        public string name;
        [Column]
        public string firstname;
        [Column]
        public string surname;
        [Column]
        public string title;
    }

Затем я объявляю строго типизированный DataContext, в котором я объявляю все коллекции таблиц как элементы контекста.

    public partial class Database : DataContext 
    {
        public Table<Affiliate> affiliate;

        public Database() : base(Settings.getConnectionString()) { } //This method gets the connection string by reading from an XML file.
    }
public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Database database = new Database();

            try
            {
                var q = from a in database.affiliate
                        select a;

                foreach (var aff in q) // Here I get the error "Specified cast is not valid"
                {
                    lblMessage.InnerHtml += aff.name + "<br />";
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
            } 
        }
    }

1 Ответ

3 голосов
/ 11 июня 2010

GetInt32() предполагает, что по крайней мере один из столбцов tbl_Aff на самом деле не является строкой ([n]varchar(...) / [n]text), и вы не дали ему никаких подсказок. Простейший трюк здесь заключается в том, чтобы просто присвоить этому свойству int (поскольку это то, чего оно явно хочет).

Мне также интересно, есть ли еще Affiliate, которые вы не показали; интерфейсы, базовые классы, отдельный частичный класс и т. д. (поскольку эти столбцы выглядят так, как будто они должны быть строками).

Основное время, когда эта проблема укусила меня, - это когда я (например) tinyint в БД, и забыл соответствующим образом набрать перечисление (: byte в этом случае).

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