powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Business Logic Toolkit - Insert
12 сообщений из 12, страница 1 из 1
Business Logic Toolkit - Insert
    #35223169
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здрасьти.
Господа, помогите, не могу понять что не так...
Пытаюсь использовать 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
Business Logic Toolkit - Insert
    #35224833
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и, ведь
Код: plaintext
`Name` varchar( 250 ) NOT NULL
...
...
Рейтинг: 0 / 0
Business Logic Toolkit - Insert
    #35225933
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Business Logic Toolkit - Insert
    #35225967
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BION
Прошу, помогите решить проблему, намаялся, все началось еще с RSDN.Frw.Data.
Спасибо.
А шо, в мускуле префиксы для параметров -- тоже "@" ? И как у вас строка соединения выглядит?
...
Рейтинг: 0 / 0
Business Logic Toolkit - Insert
    #35226020
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч BION
Прошу, помогите решить проблему, намаялся, все началось еще с RSDN.Frw.Data.
Спасибо.
А шо, в мускуле префиксы для параметров -- тоже "@" ? И как у вас строка соединения выглядит?

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

Конектится нормально, селектится нормально, но не всегда :) , а вот инсерт жерез #опу.
...
Рейтинг: 0 / 0
Business Logic Toolkit - Insert
    #35226181
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BION
Конектится нормально, селектится нормально, но не всегда :) , а вот инсерт жерез #опу.
Извините, но где в вашем коде значения параметров?
...
Рейтинг: 0 / 0
Business Logic Toolkit - Insert
    #35226413
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил 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
Business Logic Toolkit - Insert
    #35226428
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: нуи в дальнейшем такая же исторя с @Description
Код: plaintext
ERROR [HYT00] Column 'Description' cannot be null
...
Рейтинг: 0 / 0
Business Logic Toolkit - Insert
    #35227953
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Драйвер ODBC в качестве placeholder параметров использует знак ?

BLToolkit ни в чём не виноват
...
Рейтинг: 0 / 0
Business Logic Toolkit - Insert
    #35228481
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДрайвер 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
Business Logic Toolkit - Insert
    #35228575
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Business Logic Toolkit - Insert
    #35228623
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил

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


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