C#_MVC_Repository_CRUD_Model

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace iFlytekDemo.Models
{
    /// <summary>
    /// 城市实体
    /// </summary>
    public class City
    {
        /// <summary>
        /// 城市编号
        /// </summary>
        [Key]
        public int CityID { get; set; }

        /// <summary>
        /// 城市名称
        /// </summary>
        [Required]
        public string CityName { get; set; }

        /// <summary>
        /// 员工集合
        /// </summary>
        public virtual ICollection<Employee> Employees { get; set; }
    }
}
复制代码

 

复制代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Web;

namespace iFlytekDemo.Models
{ 
    public class CityRepository : ICityRepository
    {
        iFlytekDemoContext context = new iFlytekDemoContext();

        public IQueryable<City> All
        {
            get { return context.Cities; }
        }

        public IQueryable<City> AllIncluding(params Expression<Func<City, object>>[] includeProperties)
        {
            IQueryable<City> query = context.Cities;
            foreach (var includeProperty in includeProperties) {
                query = query.Include(includeProperty);
            }
            return query;
        }

        public City Find(int id)
        {
            return context.Cities.Find(id);
        }

        public void InsertOrUpdate(City city)
        {
            if (city.CityID == default(int)) {
                // New entity
                context.Cities.Add(city);
            } else {
                // Existing entity
                context.Entry(city).State = EntityState.Modified;
            }
        }

        public void Delete(int id)
        {
            var city = context.Cities.Find(id);
            context.Cities.Remove(city);
        }

        public void Save()
        {
            context.SaveChanges();
        }

        public void Dispose() 
        {
            context.Dispose();
        }
    }

    public interface ICityRepository : IDisposable
    {
        IQueryable<City> All { get; }
        IQueryable<City> AllIncluding(params Expression<Func<City, object>>[] includeProperties);
        City Find(int id);
        void InsertOrUpdate(City city);
        void Delete(int id);
        void Save();
    }
}
复制代码

 

复制代码
using System.ComponentModel.DataAnnotations;

namespace iFlytekDemo.Models
{
    /// <summary>
    /// 员工实体
    /// </summary>
    public class Employee
    {
        /// <summary>
        /// 员工编号
        /// </summary>
        [Key]
        public int EmployeeID { get; set; }
        
        /// <summary>
        /// 员工姓名
        /// </summary>
        [Required]
        public string EmployeeName { get; set; }

        /// <summary>
        /// 城市编号
        /// </summary>
        [Required]
        public int CityID { get; set; }

        /// <summary>
        /// 城市对象
        /// </summary>
        public virtual City City { get; set; }
    }
}
复制代码

 

复制代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Web;

namespace iFlytekDemo.Models
{ 
    public class EmployeeRepository : IEmployeeRepository
    {
        iFlytekDemoContext context = new iFlytekDemoContext();

        public IQueryable<Employee> All
        {
            get { return context.Employees; }
        }

        public IQueryable<Employee> AllIncluding(params Expression<Func<Employee, object>>[] includeProperties)
        {
            IQueryable<Employee> query = context.Employees;
            foreach (var includeProperty in includeProperties) {
                query = query.Include(includeProperty);
            }
            return query;
        }

        public Employee Find(int id)
        {
            return context.Employees.Find(id);
        }

        public void InsertOrUpdate(Employee employee)
        {
            if (employee.EmployeeID == default(int)) {
                // New entity
                context.Employees.Add(employee);
            } else {
                // Existing entity
                context.Entry(employee).State = EntityState.Modified;
            }
        }

        public void Delete(int id)
        {
            var employee = context.Employees.Find(id);
            context.Employees.Remove(employee);
        }

        public void Save()
        {
            context.SaveChanges();
        }

        public void Dispose() 
        {
            context.Dispose();
        }
    }

    public interface IEmployeeRepository : IDisposable
    {
        IQueryable<Employee> All { get; }
        IQueryable<Employee> AllIncluding(params Expression<Func<Employee, object>>[] includeProperties);
        Employee Find(int id);
        void InsertOrUpdate(Employee employee);
        void Delete(int id);
        void Save();
    }
}
复制代码

 

复制代码
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace iFlytekDemo.Models
{
    public class iFlytekDemoContext : DbContext
    {
        // You can add custom code to this file. Changes will not be overwritten.
        // 
        // If you want Entity Framework to drop and regenerate your database
        // automatically whenever you change your model schema, add the following
        // code to the Application_Start method in your Global.asax file.
        // Note: this will destroy and re-create your database with every model change.
        // 
        // System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<iFlytekDemo.Models.iFlytekDemoContext>());

        public DbSet<iFlytekDemo.Models.City> Cities { get; set; }

        public DbSet<iFlytekDemo.Models.Employee> Employees { get; set; }
    }
}

posted @ 2014-05-01 14:12  MrMrCash  阅读(260)  评论(0编辑  收藏  举报