<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->/*
* 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("
");
// 在一个已存在的产品类别下新建一个产品(通过外键对象)
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());
}
}
}
}