MVC3、如何应用EntityFramework 连接MySql 数据库

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 原文:MVC3、如何应用EntityFramework 连接MySql 数据库新的一年,新的开始。 今天总结的主题是在MySql中应用EntityFramework 的Code First模式。 开发环境:Win8 + MySql5.5 +VS 2012. 第一步是在数据库中新建一个表,具体字段如下图。
原文: MVC3、如何应用EntityFramework 连接MySql 数据库

新的一年,新的开始。

今天总结的主题是在MySql中应用EntityFramework 的Code First模式。

开发环境:Win8 + MySql5.5 +VS 2012.

第一步是在数据库中新建一个表,具体字段如下图。

在表中添加若干数据:

数据建好之后,下面就是在项目中引用EntityFramework了。

二,在项目中新建一个实体类Product

    public class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }

注意,成员名要与数据库中的名相同。

然后新建一个接口 IProductRepository

public  interface IProductRepository
    {
        IQueryable<Product> Products { get; }
    }

 

之后,是实现接口的类

 public class EFProductRepostitory:IProductRepository    

{        

private EFDbContext context = new EFDbContext();

public IQueryable<Entities.Product> Products     

   {            

get { return context.Products; }

   }    

}

 

实现与数据库上下文关联

public class EFDbContext:DbContext
    {
        public DbSet<Product> Products { get; set; }
        public DbSet<Friend> Friends { get; set; }
    }

 

然后在Controller中实现调用

public class ProductController : Controller
    {
        private int pageSize = 4;
        private IProductRepository repository;

        public ProductController(IProductRepository productRepository)
        {
            repository = productRepository;
        }

        public ViewResult List(int page=1)
        {
            return View(repository.Products
                .OrderBy(p=>p.ProductID)
                .Skip((page-1)*pageSize)
                .Take(pageSize));
        }

    }

在Ninject产生Controller的类中绑定。

 public class NinjectControllerFactory:DefaultControllerFactory
    {
        private IKernel ninjectKernel;

        public NinjectControllerFactory()
        {
            ninjectKernel = new StandardKernel();
            AddBindings();
        }

        protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
        {
            return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
        }

        public void AddBindings()
        {
            //Mock<IProductRepository> mock = new Mock<IProductRepository>();
            //mock.Setup(m => m.Products).Returns(new List<Product> {
            //    new Product{ Name=" football", Price=25},
            //    new Product{ Name="basketball" , Price=30},
            //    new Product{ Name="PingPang" , Price=40}
            //}.AsQueryable());
            //ninjectKernel.Bind<IProductRepository>().ToConstant(mock.Object);            
            ninjectKernel.Bind<IProductRepository>().To<EFProductRepostitory>();
            ninjectKernel.Bind<IFriend>().To<EFFriend>();
        }

最后需要注意的一点是,配置文件中写数据库连接的地方要与DbContext的类名保持一致。

 <connectionStrings>
    <!--<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-SportStore.UI-20121214161900;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-SportStore.UI-20121214161900.mdf" />-->
    <add name="EFDbContext" connectionString="Database=sportstore;Data Source=localhost;User Id=root;Password=root" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>

 

 

 

 

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
8 0
|
2天前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
12 2
|
6天前
|
存储 运维 Kubernetes
多态关联在数据库设计中的应用和解决方案
多态关联在数据库设计中的应用和解决方案
15 0
|
6天前
|
Java 关系型数据库 数据库连接
【C 言专栏】C 语言与数据库的连接与操作
【5月更文挑战第2天】本文探讨了C语言如何连接和操作数据库,介绍了数据库连接的基本原理,如通过ODBC、JDBC或原生接口与数据库交互。文章详细阐述了使用ODBC连接的步骤,并列举了C语言在数据库操作中的常见任务,强调了错误处理、数据类型匹配和性能优化的重要性。通过实际案例,展示了在学生信息管理系统中应用C语言与数据库交互的过程。本文旨在帮助读者更好地理解和应用C语言进行数据库管理。
|
7天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
8天前
|
关系型数据库 MySQL 数据库
Docker数据库Mysql
Docker数据库Mysql
|
8天前
|
存储 算法 数据库
矢量数据库在图像识别与检索中的应用实践
【4月更文挑战第30天】本文探讨了矢量数据库在图像识别与检索中的应用,通过特征提取(如SIFT、SURF)、编码和相似度度量实现快速识别。在图像检索流程中,经过预处理、特征提取和编码后,矢量数据库用于查询相似特征,排序后展示给用户。实际案例显示,矢量数据库能提升电商平台的商品图像搜索效率和用户体验。随着技术发展,这一领域应用前景广阔。
|
8天前
|
存储 SQL 关系型数据库
mysql查询数据库表大小怎么操作
mysql查询数据库表大小怎么操作