Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
можно ли написать функцию linq, которая будет добавлять данные в таблицу

т.е. код примерно такой будет:
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 не подходят (функция не работает)
16 май 11, 16:05    [10659458]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
т.е. идея такая написать функции INSERT / UPDATE / DELETE (хотя бы 1 из них) не на sql, а на linq; загнать этот код в функцию, а при нажатии кнопки просто вызвать функцию
16 май 11, 16:08    [10659475]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
тут кто-нибудь есть?
16 май 11, 16:23    [10659607]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
ау
17 май 11, 00:26    [10661868]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
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-ы
17 май 11, 02:01    [10662191]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
на asp.net.

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

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

скажите, пожалуйста, как будет функция добавления данных выглядеть
17 май 11, 11:59    [10663648]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
например, на sql это будет так:
InsertCommand="INSERT INTO [TableOwner] ([OwnerID], [OwnerName], [OwnerAge]) VALUES (@OwnerID, @OwnerName, @OwnerAge)" 

SqlDataSource1.Insert(); 

а как это на linq написать без использования linqdatasource?
17 май 11, 13:27    [10664303]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
я вам уже ответил, что на 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();
17 май 11, 13:36    [10664377]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
я сделал 1ый пункт, как вы написали.
скажите, пожалуйста, что нужно нажимать дальше, чтобы писать программу. у меня 2 таблицы нарисовались(см. рисунок), а куда вводить код программы, я не пойму

К сообщению приложен файл. Размер - 75Kb
17 май 11, 14:13    [10664652]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
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();
}
как-то так
17 май 11, 14:32    [10664795]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
Спасибо большое.
Не могли бы вы сказать - куда именно это всё вводить.

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

А на ADO.NET как это всё проделать? Т.е. сейчас предо мной 2 таблицы, куда дальше жать, чтобы перекинуть текстбоксы и кнопку?
(создать новую веб-форму?)
17 май 11, 14:47    [10664939]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
я написал то, что вы сказали в default.aspx.cs (см. картинку)

он написал, что не понимает - что такое Model1, textBox1, textBox1

К сообщению приложен файл. Размер - 55Kb
17 май 11, 15:00    [10665066]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
я сейчас попробовал всёэто написать в WevForm3.aspx

всего одна ошибка - он не понимает что такое Model1.
The type or namespace name 'Model1' could not be found (are you missing a using directive or an assembly reference?)

К сообщению приложен файл. Размер - 137Kb
17 май 11, 15:07    [10665139]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
зы
Member

Откуда:
Сообщений: 2530
автор
а куда вводить код программы, я не пойму

*facepalm*
17 май 11, 16:15    [10665859]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
по ходу тут многие программировать умеют, но никто не знает, почему комп не понимает, что такое Model1.
17 май 11, 16:20    [10665910]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
Model1 - это класс с контекстом вашей модели (см заголовок окна с моделью).
чтобы посмотреть точное имя, откройте модель и в свойствах найдите Entity Container Name. скорее всего это будет Model1Container

и мне кажется, что вы взяли задачку не по зубам. такие базовые вопросы на форумах задавать очень не эффективно
17 май 11, 17:08    [10666334]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
спасибо за подсказку.
я нашёл имя - оно называется - newownerEntities. я так и написал.

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

Как я понял нужно где-то прописать - что делает Add, что делает SubmitChanges. или нужно просто добавить using ... ?

К сообщению приложен файл. Размер - 105Kb
17 май 11, 20:51    [10667706]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
найдите в solution explorer Model1.edmx, под ним будет Model1.Designer.cs
откройте его, там будет что-то вроде:
namespace NNN
{
    #region Contexts
    
    /// <summary>
    /// No Metadata Documentation available.
    /// </summary>
    public partial class MMM : ObjectContext
    {
что у вас вместо MMM?

потом откройте регион ObjectSet Properties и скажите имя самого первого класса
17 май 11, 21:25    [10667820]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
у меня вместо MMM написано newownerEntities.
я сделал скриншот (см. фото)

К сообщению приложен файл. Размер - 60Kb
17 май 11, 21:33    [10667857]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
    context.TableOwner.AddObject(owner);
    context.SaveChanges();
17 май 11, 21:41    [10667890]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
Скажите, пожалуйста, почему вы поменяли:
1)Add на AddObject
2)SubmitChanges на SaveChanges
это из-за Model1.Designer.cs? мне просто нужно понять, чтобы самостоятельно научиться писать.
17 май 11, 21:45    [10667919]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
я писал по памяти и ошибся
17 май 11, 21:49    [10667942]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
beatles4
Member

Откуда:
Сообщений: 294
ясно. у меня теперь получается добавлять данные в БД. Спасибо вам большое.

Можете сказать - AddObject - эта команда где-то прописана? её можно прописать руками, как на sql в management studio?
17 май 11, 22:03    [10668020]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
это не команда, это метод класса ObjectSet<Entity>, а класс из Entity Framework

на основе вашей модели (Model1.edmx) visual studio сгенерировал реализацию модели (Model1.Designer.edmx, причем он автоматически пересоздается каждый раз, когда вы меняете что-то в модели). т.е. все, что у есть вас в графическом представлении, получило реализацию в виде кода на C#
17 май 11, 22:10    [10668049]     Ответить | Цитировать Сообщить модератору
 Re: LINQ в качестве функции  [new]
Вестник
Member

Откуда:
Сообщений: 772
Model1.Designer.edmxcs
17 май 11, 22:10    [10668053]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить