zoukankan      html  css  js  c++  java
  • Entity Framework增删改查

    买了一本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
        }
    }

  • 相关阅读:
    计算机网络基础 汇总
    指针与数组
    卡特兰数
    Leetcode Sort Colors
    Leetcode Group Shifted Strings
    Leetcode Summary Ranges
    Leetcode Count Primes
    Leetcode Reverse Words in a String II
    Leetcode Reverse Words in a String
    Leetcode Rotate Array
  • 原文地址:https://www.cnblogs.com/Vinkong/p/10574775.html
Copyright © 2011-2022 走看看