Entity Framework(EF框架)
- Entity Framework負(fù)責(zé)將模型與數(shù)據(jù)庫關(guān)聯(lián)起來
- Entity Framework需要兩件事以實(shí)現(xiàn)它的上述目的
- 創(chuàng)建一個(gè)上下文類(MyStoreEntities)==>連接到數(shù)據(jù)庫后Entity Framework會(huì)自動(dòng)生成它
- 在連接到數(shù)據(jù)庫后,在web.config文件中增添連接串,這個(gè)連接串的名字與上下文類的名字相同==>需要開發(fā)者手動(dòng)添加
<connectionStrings>
<add name="MyStoreEntities" connectionString="metadata=res://*/Concrete.MyStore.csdl|res://*/Concrete.MyStore.ssdl|res://*/Concrete.MyStore.msl;provider=System.Data.SqlClient;provider connection string="data source=DESKTOP-6SVSFQS\SQLEXPRESS;initial catalog=MyStore;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
MyStoreEntities
public partial class MyStoreEntities : DbContext
{
public MyStoreEntities()
: base("name=MyStoreEntities")
{
}
......
public virtual DbSet<Category> Category { get; set; }
public virtual DbSet<Order> Product { get; set; }
......
}
- MyStoreEntities繼承于上下文類DbContext
- MyStoreEntities具有DbSet(模型)類型的屬性,其值對(duì)應(yīng)數(shù)據(jù)庫的每張表
- 我們通常通過MyStoreEntities的實(shí)例來對(duì)數(shù)據(jù)庫進(jìn)行讀寫,具體有如下應(yīng)用
實(shí)現(xiàn)存儲(chǔ)庫類
public class EFProductRepository:IProductsRepository
{
private MyStoreEntities db = new MyStoreEntities();
public IQueryable<Product> Products
{
get { return db.Product; }
}
public IQueryable<Category> Categories
{
get { return db.Category; }
}
public IQueryable<Customer> Customers
{
get { return db.Customer; }
}
}
實(shí)現(xiàn)業(yè)務(wù)處理類
public class DatabaseOrderProcessor : IOrderProcessor
{
public void ProcessOrder(Cart cart, ShippingAddress shippingInfo, Customer customer)
{
var db = new MyStoreEntities()
Order order = new Order();
order.CustomerId = customer.Id;
order.OrderDate = DateTime.Now;
.......
db.Order.Add(order);//修改db屬性
db.SaveChanges();//db向數(shù)據(jù)庫提交改變
}
}
}