Welcome

首页 / 软件开发 / .NET编程技术 / 精进不休.NET 4.0 (7) - ADO.NET Entity Framework 4.0新特性

精进不休.NET 4.0 (7) - ADO.NET Entity Framework 4.0新特性2012-06-01 博客园 webabcd介绍

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());
}
}
}
}