对‘Microsof SQL Server’数据源的‘用于 SQL server 的.NET Framework 数据提供程序’支持。
对‘Microsof SQL Server’数据源的‘用于 OLE DB 的.NET Framework 数据提供程序’不支持。
对‘Microsoft ODBC 数据源‘用于 用于 ODBC 的 .NET Framework 数据提供程序’不支持。
对‘Microsoft Access 数据库文件’数据源的‘用于OLE DB的.NET Framework 数据提供程序’不支持。
即,对SQL Server的专用数据提供程序支持,对OLE DB、ODBC数据提供程序不支持,对Oralce专用属于提供程序未做测试
建议:
因 为Linq to sql 的数据持久方式不能跨数据库平台,因此后台如果是sql server 数据库,可以使用此orm,调用过程最好是‘业务逻辑层’===》‘数据访问层’====》‘此Linq to sql 的orm对象’,这样,如果要跨数据库,则需要重写‘数据访问层’(此数据访问层相当于一个代理),对上面的各层不会产生影响。
2、调用:
protected void Page_Load(object sender, EventArgs e)
{
DataPersonDataContext dc = new DataPersonDataContext();
//查询2
GridView1.DataSource = from p in dc.Person
where p.ID < 100 && p.Name.StartsWith("bei")
select new { 编码 = p.ID, 姓名 = p.Name, 电话 = p.Tel };
//查询3
var varPerson = from p in dc.Person
where p.ID < 100 && p.Tel.StartsWith("010")
orderby p.Name descending
select new { 编码 = p.ID, 姓名 = p.Name, 电话 = p.Tel };
GridView1.DataSource = varPerson;
//添加
Person person1 = new Person();
person1.Name = "xianggang";
person1.Tel = "00852-11111111";
dc.Person.InsertOnSubmit(person1);
dc.SubmitChanges();
//更新
Person person2 = dc.Person.Where(p => p.Name == "xianggang").First();
person2.Tel = "00852-11111110";
dc.SubmitChanges();
//删除
Person person3 = dc.Person.Where(p => p.Name == "xianggang").First();
dc.Person.DeleteOnSubmit(person3);
dc.SubmitChanges();
//查询1
GridView1.DataSource = dc.Person;
GridView1.DataBind();
}
=>
返回结果:
ID | Name | Tel |
---|---|---|
1 | beijing | 010-0000000 |
2 | shanghai | 021-0000000 |
13 | xianggang | 00852-11111111 |
14 | xianggang | 00852-11111111 |
15 | xianggang | 00852-11111111 |
16 | xianggang | 00852-11111111 |
=>
=>
1、创建linq to sql(即DataPerson.dbml文件):
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行库版本:2.0.50727.1433
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
[System.Data.Linq.Mapping.DatabaseAttribute(Name="msdb")]
public partial class DataPersonDataContext : System.Data.Linq.DataContext
{
private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
#region Extensibility Method Definitions
partial void OnCreated();
partial void InsertPerson(Person instance);
partial void UpdatePerson(Person instance);
partial void DeletePerson(Person instance);
#endregion
public DataPersonDataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["msdbConnectionString"].ConnectionString, mappingSource)
{
OnCreated();
}
public DataPersonDataContext(string connection) :
base(connection, mappingSource)
{
OnCreated();
}
public DataPersonDataContext(System.Data.IDbConnection connection) :
base(connection, mappingSource)
{
OnCreated();
}
public DataPersonDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
public DataPersonDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
public System.Data.Linq.Table<Person> Person
{
get
{
return this.GetTable<Person>();
}
}
}
[Table(Name="dbo.Person")]
public partial class Person : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _ID;
private string _Name;
private string _Tel;
#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate(System.Data.Linq.ChangeAction action);
partial void OnCreated();
partial void OnIDChanging(int value);
partial void OnIDChanged();
partial void OnNameChanging(string value);
partial void OnNameChanged();
partial void OnTelChanging(string value);
partial void OnTelChanged();
#endregion
public Person()
{
OnCreated();
}
[Column(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int ID
{
get
{
return this._ID;
}
set
{
if ((this._ID != value))
{
this.OnIDChanging(value);
this.SendPropertyChanging();
this._ID = value;
this.SendPropertyChanged("ID");
this.OnIDChanged();
}
}
}
[Column(Storage="_Name", DbType="NChar(10)")]
public string Name
{
get
{
return this._Name;
}
set
{
if ((this._Name != value))
{
this.OnNameChanging(value);
this.SendPropertyChanging();
this._Name = value;
this.SendPropertyChanged("Name");
this.OnNameChanged();
}
}
}
[Column(Storage="_Tel", DbType="NChar(20)")]
public string Tel
{
get
{
return this._Tel;
}
set
{
if ((this._Tel != value))
{
this.OnTelChanging(value);
this.SendPropertyChanging();
this._Tel = value;
this.SendPropertyChanged("Tel");
this.OnTelChanged();
}
}
}
public event PropertyChangingEventHandler PropertyChanging;
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void SendPropertyChanging()
{
if ((this.PropertyChanging != null))
{
this.PropertyChanging(this, emptyChangingEventArgs);
}
}
protected virtual void SendPropertyChanged(String propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
#pragma warning restore 1591
3.linq多表查询
select t_friend.userid,friendid,truename,formid
from dbo.t_friend left join dbo.t_userinfo
on dbo.t_friend.friendid=dbo.t_userinfo.userid
where dbo.t_friend.userid=5 and applystate=1
linq语句
public void bind()