Как работает добавление записи в db с использованием Linq to SQL? - PullRequest
2 голосов
/ 12 апреля 2011

Я только изучаю Linq to SQL, и из примера я добавил запись в db, передав объект пользовательского типа.Например, чтобы добавить нового пользователя в таблицу пользователей, я сделал:

db.Users.InsertOnSubmit(newUser);
db.SubmitChanges();

Я не мог понять, как Linq знает, какое значение свойства должно быть добавлено в какой столбец?

Что лучше?способ добавить новую запись в db с использованием Linq?

Просьба также упомянуть, как я могу добавить, если я не использую пользовательские типы (DTO)?

, так что спасибо за ваше драгоценное время иобмен.

1 Ответ

4 голосов
/ 12 апреля 2011

Ваш файл DBML описывает, как все свойства ваших объектов отображаются в вашей СУБД. таблицы / представления базы данных, которые вы добавляете в DBML, приводят к тому, что для вас создаются соответствующие классы - например, ваш Users класс - свойства которого украшены атрибутами, указывающими L2S, как обрабатывать все сопоставления ORM

Под вашим файлом DBML должен быть файл [любой] .designer.cs, который показывает это. Вот пример того, как это должно выглядеть:

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Invoices")]
public partial class Invoice : INotifyPropertyChanging, INotifyPropertyChanged
{

    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

    private long _InvoiceId;

    private string _InvoiceNum;

    private decimal _TotalTaxDue;

чик

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_InvoiceId", AutoSync=AutoSync.OnInsert, DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
    public long InvoiceId
    {
        get
        {
            return this._InvoiceId;
        }
        set
        {
            if ((this._InvoiceId != value))
            {
                this.OnInvoiceIdChanging(value);
                this.SendPropertyChanging();
                this._InvoiceId = value;
                this.SendPropertyChanged("InvoiceId");
                this.OnInvoiceIdChanged();
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_InvoiceNum", DbType="VarChar(15)")]
    public string InvoiceNum
    {
        get
        {
            return this._InvoiceNum;
        }
        set
        {
            if ((this._InvoiceNum != value))
            {
                this.OnInvoiceNumChanging(value);
                this.SendPropertyChanging();
                this._InvoiceNum = value;
                this.SendPropertyChanged("InvoiceNum");
                this.OnInvoiceNumChanged();
            }
        }
    }

и т.д.

...