Bước 1. Tạo một dự án trong Visual Studio: có thể là dự án ASP.NET hoặc WinForm.
Bước 2. Kích chuột phải vào dự án và chọn Add > New Items > ADO.NET Entity Data Model
Bước 5. Tạo một kết nối bằng cách nhấp vào New Connection và cấu hình:
Server name: server lưu trữ dữ liệu. Ví dụ: chọn localhost
Use SQL Server Authentication: login vào dữ liệu bằng tài khoản được cấp. Ví dụ: username=sa; password=123.
Select or Enter a Database name: nhập tên database cần làm việc.
Sau đó, nhấp Test Connection để kiểm tra. Nếu thông báo:
Thì đã thành công. Chuyển sang bước tiếp theo.
Bước 6. Chọn các bảng dữ liệu trong Database
Bước 7. Nhấp Finish. Khi đó, các thực thể sẽ được khởi tạo. Ví dụ, trong trường hợp này, tôi có các thực thể: DoAnVBEntities. Mã sau đây do VS sinh tự động:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------ using System;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Data.EntityClient;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Runtime.Serialization;
[assembly: EdmSchemaAttribute()]
namespace EntityModel
{
#region Contexts
/// <summary>
/// No Metadata Documentation available.
/// </summary>
public partial class DoAnVBEntities : ObjectContext
{
#region Constructors
/// <summary>
/// Initializes a new DoAnVBEntities object using the connection string found in the 'DoAnVBEntities' section of the application configuration file.
/// </summary>
public DoAnVBEntities() : base("name=DoAnVBEntities", "DoAnVBEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new DoAnVBEntities object.
/// </summary>
public DoAnVBEntities(string connectionString) : base(connectionString, "DoAnVBEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new DoAnVBEntities object.
/// </summary>
public DoAnVBEntities(EntityConnection connection) : base(connection, "DoAnVBEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
#endregion
#region Partial Methods
partial void OnContextCreated();
#endregion
#region ObjectSet Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
public ObjectSet<tbl_Khoa> tbl_Khoa
{
get
{
if ((_tbl_Khoa == null))
{
_tbl_Khoa = base.CreateObjectSet<tbl_Khoa>("tbl_Khoa");
}
return _tbl_Khoa;
}
}
private ObjectSet<tbl_Khoa> _tbl_Khoa;
/// <summary>
/// No Metadata Documentation available.
/// </summary>
public ObjectSet<tbl_lop> tbl_lop
{
get
{
if ((_tbl_lop == null))
{
_tbl_lop = base.CreateObjectSet<tbl_lop>("tbl_lop");
}
return _tbl_lop;
}
}
private ObjectSet<tbl_lop> _tbl_lop;
#endregion
#region AddTo Methods
/// <summary>
/// Deprecated Method for adding a new object to the tbl_Khoa EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead.
/// </summary>
public void AddTotbl_Khoa(tbl_Khoa tbl_Khoa)
{
base.AddObject("tbl_Khoa", tbl_Khoa);
}
/// <summary>
/// Deprecated Method for adding a new object to the tbl_lop EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead.
/// </summary>
public void AddTotbl_lop(tbl_lop tbl_lop)
{
base.AddObject("tbl_lop", tbl_lop);
}
#endregion
}
#endregion
#region Entities
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="DoAnVBModel", Name="tbl_Khoa")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class tbl_Khoa : EntityObject
{
#region Factory Method
/// <summary>
/// Create a new tbl_Khoa object.
/// </summary>
/// <param name="idKhoa">Initial value of the idKhoa property.</param>
/// <param name="tenKhoa">Initial value of the TenKhoa property.</param>
public static tbl_Khoa Createtbl_Khoa(global::System.Int32 idKhoa, global::System.String tenKhoa)
{
tbl_Khoa tbl_Khoa = new tbl_Khoa();
tbl_Khoa.idKhoa = idKhoa;
tbl_Khoa.TenKhoa = tenKhoa;
return tbl_Khoa;
}
#endregion
#region Primitive Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 idKhoa
{
get
{
return _idKhoa;
}
set
{
if (_idKhoa != value)
{
OnidKhoaChanging(value);
ReportPropertyChanging("idKhoa");
_idKhoa = StructuralObject.SetValidValue(value);
ReportPropertyChanged("idKhoa");
OnidKhoaChanged();
}
}
}
private global::System.Int32 _idKhoa;
partial void OnidKhoaChanging(global::System.Int32 value);
partial void OnidKhoaChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String TenKhoa
{
get
{
return _TenKhoa;
}
set
{
OnTenKhoaChanging(value);
ReportPropertyChanging("TenKhoa");
_TenKhoa = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("TenKhoa");
OnTenKhoaChanged();
}
}
private global::System.String _TenKhoa;
partial void OnTenKhoaChanging(global::System.String value);
partial void OnTenKhoaChanged();
#endregion
}
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="DoAnVBModel", Name="tbl_lop")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class tbl_lop : EntityObject
{
#region Factory Method
/// <summary>
/// Create a new tbl_lop object.
/// </summary>
/// <param name="malop">Initial value of the malop property.</param>
/// <param name="makhoa">Initial value of the makhoa property.</param>
public static tbl_lop Createtbl_lop(global::System.Int32 malop, global::System.Int32 makhoa)
{
tbl_lop tbl_lop = new tbl_lop();
tbl_lop.malop = malop;
tbl_lop.makhoa = makhoa;
return tbl_lop;
}
#endregion
#region Primitive Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 malop
{
get
{
return _malop;
}
set
{
if (_malop != value)
{
OnmalopChanging(value);
ReportPropertyChanging("malop");
_malop = StructuralObject.SetValidValue(value);
ReportPropertyChanged("malop");
OnmalopChanged();
}
}
}
private global::System.Int32 _malop;
partial void OnmalopChanging(global::System.Int32 value);
partial void OnmalopChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 makhoa
{
get
{
return _makhoa;
}
set
{
if (_makhoa != value)
{
OnmakhoaChanging(value);
ReportPropertyChanging("makhoa");
_makhoa = StructuralObject.SetValidValue(value);
ReportPropertyChanged("makhoa");
OnmakhoaChanged();
}
}
}
private global::System.Int32 _makhoa;
partial void OnmakhoaChanging(global::System.Int32 value);
partial void OnmakhoaChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public global::System.String tenlop
{
get
{
return _tenlop;
}
set
{
OntenlopChanging(value);
ReportPropertyChanging("tenlop");
_tenlop = StructuralObject.SetValidValue(value, true);
ReportPropertyChanged("tenlop");
OntenlopChanged();
}
}
private global::System.String _tenlop;
partial void OntenlopChanging(global::System.String value);
partial void OntenlopChanged();
#endregion
}
#endregion
}
Bước 8. Thiết kế một Form như sau:
Trong đó:
ListBox có tên là lbKhoa;
ComboBox có tên là cbKhoa;
Hai TextBox có tên là: txtTenKhoaMoi và txtKhoa;
Các nút “Xem Khoa”, “Đổi Tên”, “Xóa” và “Thêm Khoa” lần lượt có tên là btXemKhoa, btUpdate, btXoa, btThem.
Bước 9. Ta thực thi các truy vấn tương ứng với Select, Update, Insert và Delete.
Phương thức | Giải thích |
Select | Tạo một đối tượng DoAnVBEntities, sau đó sử dụng thuộc tính tbl_Khoa |
Insert | Tạo một đối tượng DoAnVBEntities, sau đó sử dụng phương thức AddTotbl_Khoa. Tham số trong trường hợp này là một thực thể Khoa, do đó, ta sử dụng phương thưc tĩnh Createtbl_Khoa của đối tượng tbl_Khoa. Kết thúc việc thêm dữ liệu, ta triệu gọi phương thức SaveChanges. |
Update và Delete | Ta làm hoàn toàn tương tự, nhưng lưu ý để chọn được đối tượng cần update hay delete, ta cần sử dụng LINQ để xử lý. |
Đây là mã nguôn của chương trình minh họa:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace EntityModel
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Liệt kê đối tượng select
private void btShow_Click(object sender, EventArgs e)
{
DoAnVBEntities vb = new DoAnVBEntities();
lbKhoa.DataSource = vb.tbl_Khoa;
lbKhoa.DisplayMember = "TenKhoa";
}
//Thêm đối tượng Insert
private void btThem_Click(object sender, EventArgs e)
{
DoAnVBEntities vb = new DoAnVBEntities();
vb.AddTotbl_Khoa(tbl_Khoa.Createtbl_Khoa(0, txtKhoa.Text));
vb.SaveChanges();
Form1_Load(null, null);
btShow_Click(null, null);
}
private void Form1_Load(object sender, EventArgs e)
{
DoAnVBEntities vb = new DoAnVBEntities();
cbKhoa.DataSource = vb.tbl_Khoa;
cbKhoa.DisplayMember = "tenkhoa";
btShow_Click(null, null);
}
//Update thông tin đối tượng
private void btUpdate_Click(object sender, EventArgs e)
{
DoAnVBEntities vb = new DoAnVBEntities();
var khoa = (from d in vb.tbl_Khoa
where d.TenKhoa == cbKhoa.Text
select d).First();
khoa.TenKhoa = txtTenKhoaMoi.Text;
vb.SaveChanges();
Form1_Load(null, null);
}
//Xóa đối tượng
private void btXoa_Click(object sender, EventArgs e)
{
DoAnVBEntities vb = new DoAnVBEntities();
var khoa = (from d in vb.tbl_Khoa
where d.TenKhoa == cbKhoa.Text
select d).First();
vb.DeleteObject(khoa);
vb.SaveChanges();
Form1_Load(null, null);
}
}
}
Chương trình khi thực thi:
No comments:
Post a Comment