Linq
1)新建 项目 winform 窗体
文件-->新建—>windows-->winform窗体
2) 添加 Linq To Sql 类
右击项目名称--->添加---->新建项
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UTTBPVEV4TVM1d2JtYz0=)
3) 拖表到 DataClasses1.dbml
视图->服务器资源管理器
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UTTFNalV6TWpFdWNHNW4=)
添加数据源,用来实例化dbml类
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UTTFOamt6TlRJdWNHNW4=)
Northwind 是项目要添加的数据库名称,确定后 左面就出现表结构了
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UTTFPREkzTkRJdWNHNW4=)
拖动 Product表到 dbml 设计器上, 类中则自动生成字段映射到数据库
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXdNalUwTkRNdWNHNW4=)
![]()
class Products : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs =
new PropertyChangingEventArgs(String.Empty);
private int _ProductID;
private string _ProductName;
private System.Nullable<
int> _SupplierID;
private System.Nullable<
int> _CategoryID;
private string _QuantityPerUnit;
private System.Nullable<
decimal> _UnitPrice;
private System.Nullable<
short> _UnitsInStock;
private System.Nullable<
short> _UnitsOnOrder;
private System.Nullable<
short> _ReorderLevel;
private bool _Discontinued;
接下来开始创建控件并绑定数据源.
1)点击窗体,菜单--》数据源-->添加数据源
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXdOalE1T0RFdWNHNW4=)
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXdOelV6TnpJdWNHNW4=)
此时重新生成下 Linq to SQL 类文件
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXhNVGcyTlM1d2JtYz0=)
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXhNamd5TlRjdWNHNW4=)
选中表-->详细信息-->拖放到 窗体
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXhOakUwTkRrdWNHNW4=)
窗体会根据数据源 自动创建合适的控件类型
![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXhPVE0yTWpjdWNHNW4=)
2个伪控件。1个是数据源,一个是导航
![]()
namespace 绑定数据
{
public partial
class Form1 : Form
{
DataClasses1DataContext datacontext =
new DataClasses1DataContext();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(
object sender, EventArgs e)
{
//给窗体绑定数据
productsBindingSource.DataSource = datacontext.Products;
}
private void productsBindingNavigatorSaveItem_Click(
object sender, EventArgs e)
{
datacontext.SubmitChanges();
//提交数据更新。
}
}
}
运行窗体 ![[Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新 [Linq]Linq To Sql ---o/r 设计器-控件数据绑定及更新](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXVZMjVpYkc5bmN5NWpiMjB2WTI1aWJHOW5jMTlqYjIwdlUzUjFaSGxNYVdabEx6SXdNVEl3TWk4eU1ERXlNREl5TnpFeU1UUXlNRGsxT1RJdWNHNW4=)
可以看到数据源自动绑定到控件上了!! 非常的给力!
注意,此时不能修改更新数据,因为
是灰色的. 更新的话得开启!
![]()
object sender, EventArgs e)
{
datacontext.SubmitChanges();
//提交数据更新。
}
注意更新的数据必须在内存中。
假如修改了 Units On order 字段为1,点击保存 不会更新到数据库,因为他没在内存,只在窗体中。
点击导航到下一个数据,然后点击更新。 则上一条的修改数据就更新到数据库了。