Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Business Logic Toolkit - Insert / 12 сообщений из 12, страница 1 из 1
30.03.2008, 19:17
    #35223169
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
Здрасьти.
Господа, помогите, не могу понять что не так...
Пытаюсь использовать BLToolkit, возникла проблема при добавлении записи.
Вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public abstract class Interest
{
    [MapField("InterestID")]
    public abstract int ID { get; }

    public abstract string Name { get; set; }
    public abstract string Description { get; set; }
}

.....

public int InsertInterest (Interest interest)
{
    int result;
    using (DbManager db = new DbManager())
    {
        return db
            .SetCommand(@"
                INSERT INTO interests(
                    Name, 
                    Description
                ) VALUES (
                    @Name, 
                    @Description
                )",
            db.CreateParameters(interest))
            .ExecuteScalar<int>();
    }
    
}

Вроде все как в примере, но при исполнении выдает эксэпшн:
Код: plaintext
ERROR [HYT00] Column 'Name' cannot be null

База: MySQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE DATABASE mobile_base;
USE mobile_base;

DROP TABLE IF EXISTS `interests`;
CREATE TABLE `interests` (
  `ID` int( 10 ) unsigned NOT NULL auto_increment,
  `Name` varchar( 250 ) NOT NULL,
  `Description` varchar( 250 ) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Прошу, помогите решить проблему, намаялся, все началось еще с RSDN.Frw.Data.
Спасибо.
...
Рейтинг: 0 / 0
31.03.2008, 15:37
    #35224833
SerP1983
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
Ну и, ведь
Код: plaintext
`Name` varchar( 250 ) NOT NULL
...
...
Рейтинг: 0 / 0
31.03.2008, 22:38
    #35225933
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
SerP1983Ну и, ведь
Код: plaintext
`Name` varchar( 250 ) NOT NULL
...

Ну и... что... проблема в том, что параметры не передаются, @name должно заменяться вот этим public abstract string Name { get; set; }, а оно не заменяется, убери NOT NULL и будешь иметь в базе пустые записи,
т.е. в базу в итоге отправляется что-то типа этого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
INSERT INTO interests(
                    Name, 
                    Description
                ) VALUES (
                    null, 
                    null
                )
Ну да ладно, выяснилось, что проблема не тут, а гараздо глубже... Как оказалось, по всей видимости BLT не хочет коректно работать с ODBC {MySQL ODBC 3.51 Driver}, т.к. продублировав базу на mdb все заработало как надо(касаемо выше описаной проблемы). Но :) ... возникло еще ряд проблем, причем возникают они при строгом следовании примерам в "документации" :) Грабли...

:) Вобщем решил так, дану их на### эти модные бизнес-логик-тулсы, которые зачатую напроч этой самой логики и лешены (к LINQ не относится), хочешь чтоб все работало как надо - зделай сам, да и необходимый мне функционал реализовать не долго. Тем более что времени итак вобрез. Вещи нужно делать простыми и доступными!!!
Крик души, сорри :)
...
Рейтинг: 0 / 0
31.03.2008, 23:10
    #35225967
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
BION
Прошу, помогите решить проблему, намаялся, все началось еще с RSDN.Frw.Data.
Спасибо.
А шо, в мускуле префиксы для параметров -- тоже "@" ? И как у вас строка соединения выглядит?
...
Рейтинг: 0 / 0
31.03.2008, 23:52
    #35226020
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
Нахлобуч BION
Прошу, помогите решить проблему, намаялся, все началось еще с RSDN.Frw.Data.
Спасибо.
А шо, в мускуле префиксы для параметров -- тоже "@" ? И как у вас строка соединения выглядит?

DbManager.AddConnectionString("Odbc", @"Driver={MySQL ODBC 3.51 Driver};SERVER=localhost;
DATABASE=mobile_base;UID=root;PWD=");

Конектится нормально, селектится нормально, но не всегда :) , а вот инсерт жерез #опу.
...
Рейтинг: 0 / 0
01.04.2008, 08:39
    #35226181
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
BION
Конектится нормально, селектится нормально, но не всегда :) , а вот инсерт жерез #опу.
Извините, но где в вашем коде значения параметров?
...
Рейтинг: 0 / 0
01.04.2008, 10:34
    #35226413
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
Изопропил BION
Конектится нормально, селектится нормально, но не всегда :) , а вот инсерт жерез #опу.
Извините, но где в вашем коде значения параметров?

Хорошо, вынудили ... :)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
public abstract class Interest
{
    public abstract int ID { get; }

    public abstract string Name { get; set; }
    public abstract string Description { get; set; }
}

.....

public void InsertInterest (Interest interest)
{
    using (DbManager db = new DbManager())
    {
        db
            .SetCommand(@"
                INSERT INTO interests(
                    Name, 
                    Description
                ) VALUES (
                    @Name, 
                    @Description
                )",
            db.CreateParameters(interest))
            .ExecuteNonQuery();
    }
    
}


private void cmdTest_Click (object sender, EventArgs e)
{
    Interest interest = TypeAccessor<Interest>.CreateInstanceEx();
    interest.Name = "Рыбалко";
    interest.Description = "Я рыбачёг";
    InsertInterest(interest);
}



Как я уже писал - в итоге:
Код: plaintext
ERROR [HYT00] Column 'Name' cannot be null

И так тоже делал, нифига...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
using (DbManager db = new DbManager())
    {
        db
            .SetCommand(@"
                INSERT INTO interests(
                    Name, 
                    Description
                ) VALUES (
                    @Name, 
                    @Description
                )",
            db.Parameter("@Name", "Рыбалко"),
            db.Parameter("@Description", "Я рыбачёг"))
            .ExecuteNonQuery();
    }
...
Рейтинг: 0 / 0
01.04.2008, 10:37
    #35226428
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
ЗЫ: нуи в дальнейшем такая же исторя с @Description
Код: plaintext
ERROR [HYT00] Column 'Description' cannot be null
...
Рейтинг: 0 / 0
01.04.2008, 17:09
    #35227953
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
Драйвер ODBC в качестве placeholder параметров использует знак ?

BLToolkit ни в чём не виноват
...
Рейтинг: 0 / 0
01.04.2008, 21:01
    #35228481
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
ИзопропилДрайвер ODBC в качестве placeholder параметров использует знак ?

BLToolkit ни в чём не виноват

Так штоль: ?Name
Код: plaintext
1.
 ERROR [ 23000 ] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Description
                        )' at line  6 

Или так :): ?@Name
Код: plaintext
1.
2.
ERROR [ 23000 ] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@Name, 
                            'Alex'@Description
                       ' at line  5 

Можно поконкретнее, с примером еси не трудно?
...
Рейтинг: 0 / 0
01.04.2008, 23:30
    #35228575
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
OdbcConnection conn = new OdbcConnection(@"DSN=test;");
            using (DbManager db = new DbManager(conn))
            {
                db
                    .SetCommand(@"
                INSERT INTO test(
                    f1, 
                    f2
                ) VALUES (
                    ?, 
                    ?
                )",
                    db.Parameter("", "Рыбалко"),
                    db.Parameter("", "Я рыбачёг"))
                    .ExecuteNonQuery();
            }
...
Рейтинг: 0 / 0
02.04.2008, 00:34
    #35228623
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Business Logic Toolkit - Insert
Изопропил

Спасиб Вам огромное, все вродя заработало! Вы мне очень помогли, век воли не видать!!!
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Business Logic Toolkit - Insert / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]