powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ в качестве функции
33 сообщений из 33, показаны все 2 страниц
LINQ в качестве функции
    #37262974
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно ли написать функцию linq, которая будет добавлять данные в таблицу

т.е. код примерно такой будет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
double function_linq_add(string a, string b)
{
}

protected void Button1_Click(object sender, EventArgs e)
{
string a=textBox1.Text;
string b=textBox2.Text;
моя_таблица=function_linq_add(a,b)
}

я просто не могу понять, как эту функцию написать. те примеры, которые есть на msdn.microsoft.com не подходят (функция не работает)
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37262980
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. идея такая написать функции INSERT / UPDATE / DELETE (хотя бы 1 из них) не на sql, а на linq; загнать этот код в функцию, а при нажатии кнопки просто вызвать функцию
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37263028
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут кто-нибудь есть?
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37263748
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ау
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37263815
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
linq - это только query.

написать функции INSERT / UPDATE / DELETEв зависимости от того, linq-"к-чему" вы используете вы пишите функции на этом "чем-то":
для linq-2-objects:
- insert: list.add(new_object);
- delete: list.remove(object_to_delete);
- update: object_to_be_updated.field = new_value;

для linq-2-sql и linq-2-ef:
- примерно то же самое, только вместо списков соотвествующие set-ы
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264338
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на asp.net.

я создал БД в management studio, она называется - "newowner", таблица в ней называется "TableOwner"
в таблице 3 столбика:
1)OwnerID (это и есть первичный ключ)
2)OwnerName
3)OwnerAge

т.е. добавляет данные только при вводе OwnerName и OwnerAge.

скажите, пожалуйста, как будет функция добавления данных выглядеть
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264574
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например, на sql это будет так:
Код: plaintext
InsertCommand="INSERT INTO [TableOwner] ([OwnerID], [OwnerName], [OwnerAge]) VALUES (@OwnerID, @OwnerName, @OwnerAge)" 

Код: plaintext
SqlDataSource1.Insert(); 

а как это на linq написать без использования linqdatasource?
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264599
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вам уже ответил, что на Linq - никак. это язык запросов, а не DML. можно только на той технологии, к которой вы применяете linq

например, с помощью Entity Framework:
1. сначала создаете модель (project/add new item/ado.net entity data model), в помощнике указываете базу и таблицы из нее
2. потом создаете контекст var context = new Имя_Вашей_Модели();
3. потом добавляете запись

var owner = new TableOwner();
owner.OwnerId = ... (если это identity колонка, то не надо)
owner.OwnerName = ...
owner.OwnerAge = ...

context.TableOwner.Add(owner);
context.SubmitChanges();
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264694
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я сделал 1ый пункт, как вы написали.
скажите, пожалуйста, что нужно нажимать дальше, чтобы писать программу. у меня 2 таблицы нарисовались(см. рисунок), а куда вводить код программы, я не пойму
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264730
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
protected void Button1_Click(object sender, EventArgs e)
{
    var context = new Model1();

    var owner = new TableOwner();
    owner.OwnerName = textBox1.Text;
    owner.OwnerAge = Convert.ToDouble(textBox2.Text);

    context.TableOwner.Add(owner);
    context.SubmitChanges();
}
как-то так
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264761
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое.
Не могли бы вы сказать - куда именно это всё вводить.

То, что я писал на sql - я делал на ASP.NET, потом создавал web form, и туда уже кидал текстбоксы и кнопку из toolbax

А на ADO.NET как это всё проделать? Т.е. сейчас предо мной 2 таблицы, куда дальше жать, чтобы перекинуть текстбоксы и кнопку?
(создать новую веб-форму?)
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264805
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я написал то, что вы сказали в default.aspx.cs (см. картинку)

он написал, что не понимает - что такое Model1, textBox1, textBox1
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37264833
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я сейчас попробовал всёэто написать в WevForm3.aspx

всего одна ошибка - он не понимает что такое Model1.
The type or namespace name 'Model1' could not be found (are you missing a using directive or an assembly reference?)
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265089
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора куда вводить код программы, я не пойму
*facepalm*
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265105
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по ходу тут многие программировать умеют, но никто не знает, почему комп не понимает, что такое Model1.
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265292
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Model1 - это класс с контекстом вашей модели (см заголовок окна с моделью).
чтобы посмотреть точное имя, откройте модель и в свойствах найдите Entity Container Name. скорее всего это будет Model1Container

и мне кажется, что вы взяли задачку не по зубам. такие базовые вопросы на форумах задавать очень не эффективно
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265842
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за подсказку.
я нашёл имя - оно называется - newownerEntities. я так и написал.

но всё равно ваш пример не работает. (см. фото)

Как я понял нужно где-то прописать - что делает Add, что делает SubmitChanges. или нужно просто добавить using ... ?
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265875
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
найдите в solution explorer Model1.edmx, под ним будет Model1.Designer.cs
откройте его, там будет что-то вроде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
namespace NNN
{
    #region Contexts
    
    /// <summary>
    /// No Metadata Documentation available.
    /// </summary>
    public partial class MMM : ObjectContext
    {
что у вас вместо MMM?

потом откройте регион ObjectSet Properties и скажите имя самого первого класса
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265880
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня вместо MMM написано newownerEntities.
я сделал скриншот (см. фото)
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265891
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
    context.TableOwner.AddObject(owner);
    context.SaveChanges();
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265901
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите, пожалуйста, почему вы поменяли:
1)Add на AddObject
2)SubmitChanges на SaveChanges
это из-за Model1.Designer.cs? мне просто нужно понять, чтобы самостоятельно научиться писать.
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265906
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я писал по памяти и ошибся
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265926
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ясно. у меня теперь получается добавлять данные в БД. Спасибо вам большое.

Можете сказать - AddObject - эта команда где-то прописана? её можно прописать руками, как на sql в management studio?
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265936
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не команда, это метод класса ObjectSet<Entity>, а класс из Entity Framework

на основе вашей модели (Model1.edmx) visual studio сгенерировал реализацию модели (Model1.Designer.edmx, причем он автоматически пересоздается каждый раз, когда вы меняете что-то в модели). т.е. все, что у есть вас в графическом представлении, получило реализацию в виде кода на C#
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265938
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Model1.Designer.edmxcs
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265949
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ясно, скажите - можно ли AddObject прописать самому ручками? Например, сделать функцию.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
double function_AddObject
{
.
.
.
}

protected void Button1_Click(object sender, EventArgs e)
        {
            var context = new newownerEntities1();
            var owner = new NewOwner();
            owner.OwnerName = TextBox2.Text;
            owner.OwnerAge = Convert.ToInt32(TextBox3.Text);

            context.NewOwner.function_AddObject(owner);
            context.SaveChanges();
        }

Например, в sql это сделать очень просто ручками в виде команды:
Код: plaintext
InsertCommand="INSERT INTO [TableOwner] ([OwnerID], [OwnerName], [OwnerAge]) VALUES (@OwnerID, @OwnerName, @OwnerAge)"


А на linq так можно сделать (т.е. самому всё прописать)
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265955
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265958
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не можно.

и я не понимаю, что вы в эту функцию собираетесь положить? все, что нужно, чтобы получить "insert into..." там уже есть. вы может до конца не уловили суть, но к sql серверу будет отправлено именно "insert into", причем правильностью формирования в зависимости от используемой СУБД займется EF
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265985
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а, ясно. я вроде понял.

Грубо говоря
AddObject(...) (на linq) тоже самое, что INSERT INTO ... VALUES ... (на sql)
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37265994
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. примерно правильно

2. это не на linq, это на EF. вы повторите про себя эту фразу несколько раз, если "хотите понять, чтобы найчиться писать самостоятельно". от того, что вы этого не понимаете или вам кажется, что я вас путаю, или сам что-то не понимаю -- ничего не меняется. примите это как факт и учите матчасть, пока не поймете, что это так

3. важно понимать, что изменения в данных отсылаются на сервер не в момент .AddObject(), а при .SaveChanges(). а при желании можно и RejectChanges() сделать. а если что-то случится с доступом к sql серверу в момент между .AddObject() и .SaveChanges(), то на сервере ничего не изменится
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37266001
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ясно. спасибо за объяснение.
скажите, пожалуйста, если написать AddObject - будет добавлять. А на что нужно поменять AddObject, чтобы:
1)удалял (deleteObject не работает)
2)изменял (updateObject не работает)
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37266017
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
специального UpdateObject нет. вы просто меняете поля объекта и делаете .SaveChanges() (как нетрудно догадаться, это будет транслировано в UPDATE ... SET)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var owner = context.TableOwner.FirstOrDefault(o => o.OwnerId == 100);
if (owner != null)
    owner.OwnerName = "новое имя";
...
куча других изменений
...
context.SaveChanges();

то же самое и для удалений. вы просто удаляете объект из коллекции и делаете .SaveChanges() (это, соотвественно, становится DELETE-ом)

Код: plaintext
1.
2.
3.
4.
5.
var owner = context.TableOwner.FirstOrDefault(o => o.OwnerId == 100);
if (owner != null)
    context.TableOwner.DeleteObject(owner);
...
context.SaveChanges()
...
Рейтинг: 0 / 0
LINQ в качестве функции
    #37266025
beatles4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ясно, спасибо
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ в качестве функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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