我正在学习Linq to SQL,并且从一个例子中我通过传递自定义类型对象在db中添加了一条记录。例如,在用户表中添加新用户我做了:
db.Users.InsertOnSubmit(newUser);
db.SubmitChanges();
我无法理解Linq如何知道应该在哪个列中添加哪个属性值?
有没有更好的方法可以使用Linq在db中添加新记录?
如果我不使用自定义类型(DTO),还请提及我可以添加的内容吗?
非常感谢您宝贵的时间和分享。
答案 0 :(得分:4)
您的DBML文件说明了所有对象的属性如何映射到您的DBMS。您添加到DBML的数据库表/视图会导致为您创建相应的类 - 就像您的Users
类一样 - 其属性使用属性进行修饰,告诉L2S如何处理所有ORM映射
在您的DBML文件下应该是显示此内容的[whatever] .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();
}
}
}
等