码迷,mamicode.com
首页 > 其他好文 > 详细

Entity Framework增删改查

时间:2019-03-21 21:49:15      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:open   访问   address   reading   foreign   mon   加载   constrain   index   

 

买了一本asp.net mvc 企业级实战的书籍,最近在学习Entity Framework,写个博客记录一下

根据书上例子的进行练习

下面是书上提供的数据库文件

技术图片
USE [Northwind]
GO
/****** Object:  Table [dbo].[Suppliers]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Suppliers](
    [SupplierID] [int] IDENTITY(1,1) NOT NULL,
    [CompanyName] [nvarchar](40) NOT NULL,
    [ContactName] [nvarchar](30) NULL,
    [ContactTitle] [nvarchar](30) NULL,
    [Address] [nvarchar](60) NULL,
    [City] [nvarchar](15) NULL,
    [Region] [nvarchar](15) NULL,
    [PostalCode] [nvarchar](10) NULL,
    [Country] [nvarchar](15) NULL,
    [Phone] [nvarchar](24) NULL,
    [Fax] [nvarchar](24) NULL,
    [HomePage] [ntext] NULL,
 CONSTRAINT [PK_Suppliers] PRIMARY KEY CLUSTERED 
(
    [SupplierID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Shippers]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Shippers](
    [ShipperID] [int] IDENTITY(1,1) NOT NULL,
    [CompanyName] [nvarchar](40) NOT NULL,
    [Phone] [nvarchar](24) NULL,
 CONSTRAINT [PK_Shippers] PRIMARY KEY CLUSTERED 
(
    [ShipperID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Region]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Region](
    [RegionID] [int] NOT NULL,
    [RegionDescription] [nchar](50) NOT NULL,
 CONSTRAINT [PK_Region] PRIMARY KEY NONCLUSTERED 
(
    [RegionID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Employees]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Employees](
    [EmployeeID] [int] IDENTITY(1,1) NOT NULL,
    [LastName] [nvarchar](20) NOT NULL,
    [FirstName] [nvarchar](10) NOT NULL,
    [Title] [nvarchar](30) NULL,
    [TitleOfCourtesy] [nvarchar](25) NULL,
    [BirthDate] [datetime] NULL,
    [HireDate] [datetime] NULL,
    [Address] [nvarchar](60) NULL,
    [City] [nvarchar](15) NULL,
    [Region] [nvarchar](15) NULL,
    [PostalCode] [nvarchar](10) NULL,
    [Country] [nvarchar](15) NULL,
    [HomePhone] [nvarchar](24) NULL,
    [Extension] [nvarchar](4) NULL,
    [Photo] [image] NULL,
    [Notes] [ntext] NULL,
    [ReportsTo] [int] NULL,
    [PhotoPath] [nvarchar](255) NULL,
 CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED 
(
    [EmployeeID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Customers]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customers](
    [CustomerID] [nchar](5) NOT NULL,
    [CompanyName] [nvarchar](40) NOT NULL,
    [ContactName] [nvarchar](30) NULL,
    [ContactTitle] [nvarchar](30) NULL,
    [Address] [nvarchar](60) NULL,
    [City] [nvarchar](15) NULL,
    [Region] [nvarchar](15) NULL,
    [PostalCode] [nvarchar](10) NULL,
    [Country] [nvarchar](15) NULL,
    [Phone] [nvarchar](24) NULL,
    [Fax] [nvarchar](24) NULL,
 CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED 
(
    [CustomerID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[CustomerDemographics]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CustomerDemographics](
    [CustomerTypeID] [nchar](10) NOT NULL,
    [CustomerDesc] [ntext] NULL,
 CONSTRAINT [PK_CustomerDemographics] PRIMARY KEY NONCLUSTERED 
(
    [CustomerTypeID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Categories]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Categories](
    [CategoryID] [int] IDENTITY(1,1) NOT NULL,
    [CategoryName] [nvarchar](15) NOT NULL,
    [Description] [ntext] NULL,
    [Picture] [image] NULL,
 CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED 
(
    [CategoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Territories]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Territories](
    [TerritoryID] [nvarchar](20) NOT NULL,
    [TerritoryDescription] [nchar](50) NOT NULL,
    [RegionID] [int] NOT NULL,
 CONSTRAINT [PK_Territories] PRIMARY KEY NONCLUSTERED 
(
    [TerritoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[CustomerCustomerDemo]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CustomerCustomerDemo](
    [CustomerID] [nchar](5) NOT NULL,
    [CustomerTypeID] [nchar](10) NOT NULL,
 CONSTRAINT [PK_CustomerCustomerDemo] PRIMARY KEY NONCLUSTERED 
(
    [CustomerID] ASC,
    [CustomerTypeID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Products]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Products](
    [ProductID] [int] IDENTITY(1,1) NOT NULL,
    [ProductName] [nvarchar](40) NOT NULL,
    [SupplierID] [int] NULL,
    [CategoryID] [int] NULL,
    [QuantityPerUnit] [nvarchar](20) NULL,
    [UnitPrice] [money] NULL,
    [UnitsInStock] [smallint] NULL,
    [UnitsOnOrder] [smallint] NULL,
    [ReorderLevel] [smallint] NULL,
    [Discontinued] [bit] NOT NULL,
 CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED 
(
    [ProductID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Orders]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Orders](
    [OrderID] [int] IDENTITY(1,1) NOT NULL,
    [CustomerID] [nchar](5) NULL,
    [EmployeeID] [int] NULL,
    [OrderDate] [datetime] NULL,
    [RequiredDate] [datetime] NULL,
    [ShippedDate] [datetime] NULL,
    [ShipVia] [int] NULL,
    [Freight] [money] NULL,
    [ShipName] [nvarchar](40) NULL,
    [ShipAddress] [nvarchar](60) NULL,
    [ShipCity] [nvarchar](15) NULL,
    [ShipRegion] [nvarchar](15) NULL,
    [ShipPostalCode] [nvarchar](10) NULL,
    [ShipCountry] [nvarchar](15) NULL,
 CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED 
(
    [OrderID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Order Details]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Order Details](
    [OrderID] [int] NOT NULL,
    [ProductID] [int] NOT NULL,
    [UnitPrice] [money] NOT NULL,
    [Quantity] [smallint] NOT NULL,
    [Discount] [real] NOT NULL,
 CONSTRAINT [PK_Order_Details] PRIMARY KEY CLUSTERED 
(
    [OrderID] ASC,
    [ProductID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[EmployeeTerritories]    Script Date: 03/21/2019 21:18:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[EmployeeTerritories](
    [EmployeeID] [int] NOT NULL,
    [TerritoryID] [nvarchar](20) NOT NULL,
 CONSTRAINT [PK_EmployeeTerritories] PRIMARY KEY NONCLUSTERED 
(
    [EmployeeID] ASC,
    [TerritoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Default [DF_Order_Details_UnitPrice]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details] ADD  CONSTRAINT [DF_Order_Details_UnitPrice]  DEFAULT (0) FOR [UnitPrice]
GO
/****** Object:  Default [DF_Order_Details_Quantity]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details] ADD  CONSTRAINT [DF_Order_Details_Quantity]  DEFAULT (1) FOR [Quantity]
GO
/****** Object:  Default [DF_Order_Details_Discount]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details] ADD  CONSTRAINT [DF_Order_Details_Discount]  DEFAULT (0) FOR [Discount]
GO
/****** Object:  Default [DF_Orders_Freight]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Orders] ADD  CONSTRAINT [DF_Orders_Freight]  DEFAULT (0) FOR [Freight]
GO
/****** Object:  Default [DF_Products_UnitPrice]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products] ADD  CONSTRAINT [DF_Products_UnitPrice]  DEFAULT (0) FOR [UnitPrice]
GO
/****** Object:  Default [DF_Products_UnitsInStock]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products] ADD  CONSTRAINT [DF_Products_UnitsInStock]  DEFAULT (0) FOR [UnitsInStock]
GO
/****** Object:  Default [DF_Products_UnitsOnOrder]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products] ADD  CONSTRAINT [DF_Products_UnitsOnOrder]  DEFAULT (0) FOR [UnitsOnOrder]
GO
/****** Object:  Default [DF_Products_ReorderLevel]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products] ADD  CONSTRAINT [DF_Products_ReorderLevel]  DEFAULT (0) FOR [ReorderLevel]
GO
/****** Object:  Default [DF_Products_Discontinued]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products] ADD  CONSTRAINT [DF_Products_Discontinued]  DEFAULT (0) FOR [Discontinued]
GO
/****** Object:  Check [CK_Birthdate]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Employees]  WITH NOCHECK ADD  CONSTRAINT [CK_Birthdate] CHECK  (([BirthDate] < getdate()))
GO
ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [CK_Birthdate]
GO
/****** Object:  Check [CK_Discount]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details]  WITH NOCHECK ADD  CONSTRAINT [CK_Discount] CHECK  (([Discount] >= 0 and [Discount] <= 1))
GO
ALTER TABLE [dbo].[Order Details] CHECK CONSTRAINT [CK_Discount]
GO
/****** Object:  Check [CK_Quantity]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details]  WITH NOCHECK ADD  CONSTRAINT [CK_Quantity] CHECK  (([Quantity] > 0))
GO
ALTER TABLE [dbo].[Order Details] CHECK CONSTRAINT [CK_Quantity]
GO
/****** Object:  Check [CK_UnitPrice]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details]  WITH NOCHECK ADD  CONSTRAINT [CK_UnitPrice] CHECK  (([UnitPrice] >= 0))
GO
ALTER TABLE [dbo].[Order Details] CHECK CONSTRAINT [CK_UnitPrice]
GO
/****** Object:  Check [CK_Products_UnitPrice]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products]  WITH NOCHECK ADD  CONSTRAINT [CK_Products_UnitPrice] CHECK  (([UnitPrice] >= 0))
GO
ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [CK_Products_UnitPrice]
GO
/****** Object:  Check [CK_ReorderLevel]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products]  WITH NOCHECK ADD  CONSTRAINT [CK_ReorderLevel] CHECK  (([ReorderLevel] >= 0))
GO
ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [CK_ReorderLevel]
GO
/****** Object:  Check [CK_UnitsInStock]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products]  WITH NOCHECK ADD  CONSTRAINT [CK_UnitsInStock] CHECK  (([UnitsInStock] >= 0))
GO
ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [CK_UnitsInStock]
GO
/****** Object:  Check [CK_UnitsOnOrder]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products]  WITH NOCHECK ADD  CONSTRAINT [CK_UnitsOnOrder] CHECK  (([UnitsOnOrder] >= 0))
GO
ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [CK_UnitsOnOrder]
GO
/****** Object:  ForeignKey [FK_CustomerCustomerDemo]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[CustomerCustomerDemo]  WITH CHECK ADD  CONSTRAINT [FK_CustomerCustomerDemo] FOREIGN KEY([CustomerTypeID])
REFERENCES [dbo].[CustomerDemographics] ([CustomerTypeID])
GO
ALTER TABLE [dbo].[CustomerCustomerDemo] CHECK CONSTRAINT [FK_CustomerCustomerDemo]
GO
/****** Object:  ForeignKey [FK_CustomerCustomerDemo_Customers]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[CustomerCustomerDemo]  WITH CHECK ADD  CONSTRAINT [FK_CustomerCustomerDemo_Customers] FOREIGN KEY([CustomerID])
REFERENCES [dbo].[Customers] ([CustomerID])
GO
ALTER TABLE [dbo].[CustomerCustomerDemo] CHECK CONSTRAINT [FK_CustomerCustomerDemo_Customers]
GO
/****** Object:  ForeignKey [FK_Employees_Employees]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Employees]  WITH NOCHECK ADD  CONSTRAINT [FK_Employees_Employees] FOREIGN KEY([ReportsTo])
REFERENCES [dbo].[Employees] ([EmployeeID])
GO
ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [FK_Employees_Employees]
GO
/****** Object:  ForeignKey [FK_EmployeeTerritories_Employees]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[EmployeeTerritories]  WITH CHECK ADD  CONSTRAINT [FK_EmployeeTerritories_Employees] FOREIGN KEY([EmployeeID])
REFERENCES [dbo].[Employees] ([EmployeeID])
GO
ALTER TABLE [dbo].[EmployeeTerritories] CHECK CONSTRAINT [FK_EmployeeTerritories_Employees]
GO
/****** Object:  ForeignKey [FK_EmployeeTerritories_Territories]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[EmployeeTerritories]  WITH CHECK ADD  CONSTRAINT [FK_EmployeeTerritories_Territories] FOREIGN KEY([TerritoryID])
REFERENCES [dbo].[Territories] ([TerritoryID])
GO
ALTER TABLE [dbo].[EmployeeTerritories] CHECK CONSTRAINT [FK_EmployeeTerritories_Territories]
GO
/****** Object:  ForeignKey [FK_Order_Details_Orders]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details]  WITH NOCHECK ADD  CONSTRAINT [FK_Order_Details_Orders] FOREIGN KEY([OrderID])
REFERENCES [dbo].[Orders] ([OrderID])
GO
ALTER TABLE [dbo].[Order Details] CHECK CONSTRAINT [FK_Order_Details_Orders]
GO
/****** Object:  ForeignKey [FK_Order_Details_Products]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Order Details]  WITH NOCHECK ADD  CONSTRAINT [FK_Order_Details_Products] FOREIGN KEY([ProductID])
REFERENCES [dbo].[Products] ([ProductID])
GO
ALTER TABLE [dbo].[Order Details] CHECK CONSTRAINT [FK_Order_Details_Products]
GO
/****** Object:  ForeignKey [FK_Orders_Customers]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Orders]  WITH NOCHECK ADD  CONSTRAINT [FK_Orders_Customers] FOREIGN KEY([CustomerID])
REFERENCES [dbo].[Customers] ([CustomerID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]
GO
/****** Object:  ForeignKey [FK_Orders_Employees]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Orders]  WITH NOCHECK ADD  CONSTRAINT [FK_Orders_Employees] FOREIGN KEY([EmployeeID])
REFERENCES [dbo].[Employees] ([EmployeeID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Employees]
GO
/****** Object:  ForeignKey [FK_Orders_Shippers]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Orders]  WITH NOCHECK ADD  CONSTRAINT [FK_Orders_Shippers] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[Shippers] ([ShipperID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Shippers]
GO
/****** Object:  ForeignKey [FK_Products_Categories]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products]  WITH NOCHECK ADD  CONSTRAINT [FK_Products_Categories] FOREIGN KEY([CategoryID])
REFERENCES [dbo].[Categories] ([CategoryID])
GO
ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [FK_Products_Categories]
GO
/****** Object:  ForeignKey [FK_Products_Suppliers]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Products]  WITH NOCHECK ADD  CONSTRAINT [FK_Products_Suppliers] FOREIGN KEY([SupplierID])
REFERENCES [dbo].[Suppliers] ([SupplierID])
GO
ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [FK_Products_Suppliers]
GO
/****** Object:  ForeignKey [FK_Territories_Region]    Script Date: 03/21/2019 21:18:01 ******/
ALTER TABLE [dbo].[Territories]  WITH CHECK ADD  CONSTRAINT [FK_Territories_Region] FOREIGN KEY([RegionID])
REFERENCES [dbo].[Region] ([RegionID])
GO
ALTER TABLE [dbo].[Territories] CHECK CONSTRAINT [FK_Territories_Region]
GO
View Code

这里是练习的源代码

using System;
using System.Collections.Generic;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace EFCURD
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var edm = new NorthwindEntities())
            {

                var query = from d in edm.Order_Details
                            join order in edm.Orders
                            on d.OrderID equals order.OrderID
                            select new { 
                             OrderId = order.OrderID,
                             ProductId = d.ProductID,
                             UnitPrice = d.UnitPrice
                            
                            };
                Console.WriteLine(query.Count());
                foreach (var q in query)
                {
                    Console.WriteLine("{0},{1},{2}",q.OrderId,q.ProductId,q.UnitPrice);  
                }
                
            }
           
            
            //add();//调用新增方法

            //Querydelay1();//延迟加载第一种方式
            //QueryDelay2();//延迟加载第二种方式
            //List<Customers> list = GetListBy(u => u.CustomerID.Contains("A"), u => u.ContactName);//根据条件排序和查询
            //foreach (var a in list)
            //{
            //    Console.WriteLine(a.Country);
            //}

            //List<Customers> list = GetPagedList(2, 10, u => u.CustomerID.Contains("A"), u => u.CustomerID);//调用分页方法查询

            //foreach (var item in list)
            //{
            //    Console.WriteLine(item.ContactName); 
            //}
           // Edit();//修改方法(先查询,在修改)
            //Edit2();//修改方法(创建对象,直接修改)
            //Delete();//删除方法
            //SavaBatched();//批处理
           //  BatcheAdd();//批处理增加50条数据
          Console.ReadKey(); 
        }

        #region 新增
        static int add() {
            using (NorthwindEntities db = new NorthwindEntities())
            {
                Customers _Customers = new Customers()
                {
                    CustomerID ="kfz",
                    Address ="广东省****技术有限公司",
                 City ="江门",
                 Phone ="123456789",
                 CompanyName="广东省****技术有限公司",
                 ContactName="vinkong",
                 
                };
                //方法一
               // db.Customers.Add(_Customers);
                //方法二
                DbEntityEntry<Customers> entry = db.Entry<Customers>(_Customers);
                entry.State = System.Data.EntityState.Added;
                return db.SaveChanges();
                
            
            }
        
          }
        #endregion
        //简单查询和延时加载
        #region Querydelay1

        static void Querydelay1() { 
        
        using (NorthwindEntities db = new NorthwindEntities()){
            
            DbQuery<Customers> dbQuery = db.Customers.Where(u => u.ContactName == "vinkong").OrderBy(u=>u.ContactName).Take(1) as DbQuery<Customers>;
            //获得延迟查询对象后,调用对象的获取方法,此时,就会根据之前的条件生成sql语句,
            //查询数据库了!
            Customers _Customers = dbQuery.FirstOrDefault();
           
            Console.WriteLine(_Customers.ContactName);
        }
        
        
        }


        #endregion
        #region QueryDelay2
        static void QueryDelay2() { 
        using (NorthwindEntities  db = new NorthwindEntities()){


            IQueryable<Orders> _Orders = db.Orders.Where(a => a.CustomerID == "SUPRD");
            //真实返回的DbQuery对象,以接口方式返回
            //此时只查询了订单表
            Orders order = _Orders.FirstOrDefault();

            //当访问订单对象里的外键实体时,EF会查询订单对应的用户表,查询之后,再将数据装入这个实体
            Console.WriteLine(order.Customers.ContactName);
            IQueryable<Orders> orderList = db.Orders;

            List<Orders> objet = db.Orders.ToList();
            Console.WriteLine(objet.Count);
            foreach (Orders o  in orderList)
            {
                Console.WriteLine(o.OrderID + ":ContactName="+ o.Customers.ContactName);
            }


        
        }
        
        
        
        }

 #endregion

        #region 根据条件排序和查询
        static List<Customers> GetListBy<TKey>(Expression<Func<Customers,bool>> 
            whereLambda , Expression <Func<Customers,TKey>> orderLambda) {
        using (NorthwindEntities db = new NorthwindEntities()){

            return db.Customers.Where(whereLambda).OrderBy(orderLambda).ToList();
        
              }
     }
        #endregion


        #region 分页查询
        static List<Customers> GetPagedList<TKey>(int pageIndex , int pageSize,
            Expression <Func<Customers,bool>> whereLambda,Expression <Func<Customers,TKey>> orderBy)
        {
            using (NorthwindEntities db = new NorthwindEntities())
            {
                //分页时一定要注意:Skip之前一定要OrderBy

                return db.Customers.Where(whereLambda).OrderBy(orderBy).Skip
                    ((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            }
        
        }

        #endregion

        #region 修改(官方推荐的修改方式时先查询后修改)



        static void Edit() {
            using (NorthwindEntities db = new NorthwindEntities())
            {
                
            //查询出一个要修改的对象,注意:此时返回的是一个Customer类的代理对象
                Customers _customers = db.Customers.Where(u => u.CustomerID == "kfz").FirstOrDefault();

                Console.WriteLine("修改前:"+_customers.ContactName);
                //修改内容--注意:此时其实操作的是代理类对象的属性,这些属性会将值设置给内部的
                //Customers对象对应的属性,同时标记此属性为已修改状态
                _customers.ContactName = "你的世界";

                //重新保存到数据库==注意:此时EF上下文会检查容器内部所有的对象,先找到标记为修改的对象
                //然后找到标记为修改的对象属性,生成对应的update语句执行
                db.SaveChanges();
                Console.WriteLine("修改成功:");
                Console.WriteLine(_customers.ContactName);
               
                
               
            }
        
        
        }
        #endregion
        #region 优化的修改方式(创建对象,直接修改)

        static void Edit2()
        {
            //查询出一个要修改的对象
            Customers _Customers = new Customers()
            {
                CustomerID ="kfz",
                Address ="江门市江海区",
             City ="江门",
             Phone ="18702604882",
             CompanyName="江门****有限公司",
             ContactName="日出日落"

            };
            using (NorthwindEntities db = new NorthwindEntities())
            {
                DbEntityEntry<Customers> entry = db.Entry<Customers>(_Customers);
                entry.State = System.Data.EntityState.Unchanged;
                entry.Property("Phone").IsModified = true;
                db.SaveChanges();
                Console.WriteLine("修改成功:");
                Console.WriteLine(_Customers.ContactName);


            }

        }

        #endregion

        #region 删除
        static void Delete() { 
        
        using(NorthwindEntities db = new NorthwindEntities()){
        //1.创建要删除的对象
            Customers u = new Customers() { CustomerID = "kfz" };
            //附加到EF中
            db.Customers.Attach(u);
            //标记为删除--注意:此方法就是标记当前对象为删除状态
            db.Customers.Remove(u);


            /*
             也可以使用Entry来附加和修改
             
             
            
            DbEntityEntry<Customers> entry = db.Entry<Customers>(u);
            entry.State = System.Data.EntityState.Deleted;
              */
            //执行删除SQL
            db.SaveChanges();
            Console.WriteLine("删除成功!");
        
        }
        
        }


    #endregion

        #region 批处理
        static void SavaBatched() {
            Customers _Customers = new Customers
            {
                CustomerID = "13",
                Address = "北京路",
                City = "北京",
                Phone = "1870264882",
                CompanyName = "***技术有限公司",
                ContactName = "疯子中"
            };

            using (NorthwindEntities db = new NorthwindEntities()) {
               db.Customers.Add(_Customers);
                Customers _Customers2 = new Customers
                {
                    CustomerID = "15",
                    Address = "南京路",
                    City = "南京",
                    Phone = "18702604883",
                    CompanyName = "****责任有限公司",
                    ContactName = "疯子凯"
                };
                db.Customers.Add(_Customers2);
                //修改数据
                Customers usr = new Customers()
                {
                    CustomerID = "kfz",
                    ContactName = "回忆杀",
                    CompanyName = "广东****公司xxff"
                };
                DbEntityEntry<Customers> entry = db.Entry<Customers>(usr);
                entry.State = System.Data.EntityState.Unchanged;
                entry.Property("CompanyName").IsModified = true;
                //删除数据
                Customers u = new Customers()
                {
                    CustomerID = "zfk"
                      

                };
                ////附加到EF中
               db.Customers.Attach(u);
                ////标记为删除--注意:此方法就是标记当前对象为删除状态
               db.Customers.Remove(u);
                db.SaveChanges();
                Console.WriteLine("批处理 完成~~~~~~~~!");
               }
        }
        #endregion

        #region  批处理--一次新增50条数据
        static void BatcheAdd() {
            using (NorthwindEntities db = new NorthwindEntities())
            {

                for (int i = 0; i < 50; i++)
                {
                    Customers _Customers = new Customers
                    {
                        CustomerID ="kz"+i,
                        Address ="德式街区",
                        City="德式",
                        Phone="18702604883",
                        CompanyName="工商",
                        ContactName="kfz"+i,

  };

                    db.Customers.Add(_Customers);  
                }
                db.SaveChanges();

                
            }
        
        
        }
        #endregion
    }
}

Entity Framework增删改查

标签:open   访问   address   reading   foreign   mon   加载   constrain   index   

原文地址:https://www.cnblogs.com/Vinkong/p/10574775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!