介绍
ADO.NET Entity Framework 4.0 的新增功能
* 对外键的支持,即把外键当做实体的一个属性来处理
* 对复杂类型的支持,即实体属性可以是一个复杂类型
* 将多个表映射到一个概念实体,将一个表拆为多个概念实体
* 增强了 LINQ to Entities
* 新增了对 POCO(Plain Old CLR Object)的支持,即 Model 代码中不会有任何关于持久化的代码
* 其他新特性
示例
1、外键 的 Demo
EntityFramework/ForeignKeys/Demo.aspx.cs
代码
/*
* ADO.NET Entity Framework 4.0 - 新增了对外键的支持,即把外键当做实体的一个属性来处理
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace DataAccess.EntityFramework.ForeignKeys
{
public partial class Demo : System.Web.UI.Page
{
private Random _random = new Random();
protected void Page_Load(object sender, EventArgs e)
{
// 在一个已存在的产品类别下新建一个产品(通过外键值)
using (var ctx = new ForeignKeysEntities())
{
Product p = new Product
{
Name = "webabcd test" + _random.Next().ToString(),
ProductNumber = _random.Next().ToString(),
StandardCost = 1,
ListPrice = 1,
SellStartDate = DateTime.Now,
rowguid = Guid.NewGuid(),
ModifiedDate = DateTime.Now,
ProductCategoryID = 18
};
// 这里需要手工 Add 这个新的 Product,然后再调用 SaveChanges()
ctx.Products.AddObject(p);
Response.Write(ctx.SaveChanges());
}
Response.Write("<br /><br />");
// 在一个已存在的产品类别下新建一个产品(通过外键对象)
using (var ctx = new ForeignKeysEntities())
{
Product p = new Product
{
Name = "webabcd test" + _random.Next().ToString(),
ProductNumber = _random.Next().ToString(),
StandardCost = 1,
ListPrice = 1,
SellStartDate = DateTime.Now,
rowguid = Guid.NewGuid(),
ModifiedDate = DateTime.Now,
ProductCategory = ctx.ProductCategories.Single(c => c.ProductCategoryID == 18)
};
// 这里直接调用 SaveChanges() 即可,而不用再手工地 Add 这个新的 Product
// 因为与这个新的 Product 关联的那个已存在的 ProductCategory 会自动地 Add 这个 新的 Product
Response.Write(ctx.SaveChanges());
}
}
}
}