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>
MVC3、如何应用EntityFramework 连接MySql 数据库相关推荐
- ef6 mysql code first_使用EntityFramework6连接MySql数据库(code first方式)
demo托管地址:http://git.oschina.net/uustudy/ASP.NET-CodeFirst-MySQL-Demo.git 首先和DB First那篇文章一样,准备工具都要一样的 ...
- EF6 使用 和 连接MySql 数据库-闪退和若干问题解决
在visual studio中用EF6连接Mysql数据库,搞了我两天,刚刚搞定,其实很简单就是版本的问题,这里填个坑. 首先,必备插件 1. MySql Connector/NET 2. MySql ...
- .net连接mysql数据_.net连接MYSQL数据库的方法及示例!
连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- python用django连接mysql_三分钟了解Django如何连接Mysql数据库
处理用户注册请求.Django连接MysqL数据库相关配置.数据库迁移命令: my_Dproject/app01/views.py 在views函数文件中添加register函数,来处理用户注册 ...
- eclipselink mysql_Eclipse连接MySQL数据库(傻瓜篇)
Eclipse连接MySQL数据库(傻瓜篇) 本来不想写这么简单人文章,在百度上搜索我这个标题,完全符合标题的一大堆.但我按照那些文章捣鼓了很久,就是不行. 我的环境:MySQL:mysql-esse ...
- Linux JSP连接MySQL数据库
Linux(Ubuntu平台)JSP通过JDBC连接MySQL数据库,与Windows平台类似,步骤如下: 下载 jdbc: mysql-connector-java-5.1.18.tar.gz 解压 ...
- python使用PyMySQL的连接MySQL数据库
如何实现将100000条数据插入到MySQL数据库?如果使用MySQL客户端来完成这个操作,那么这个工作量无疑是巨大的,可以通过使用程序代码的方式去连接MySQL数据库,然后对MySQL数据库进行增删 ...
- python3连接mysql,python3连接MySQL数据库实例详解
本文实例为大家分享了python3连接MySQL数据库的具体代码,供大家参考,具体内容如下 #python3连接MySQL实例 import pymysql """导入连 ...
最新文章
- 注册HttpSessionListener失效原因
- 分布式事务 常见方法
- Linux wildcard
- 值重新赋值_JavaScript-赋值运算符
- 【Coursera】Getting Started with Python:Week One - Reading: Welcome to The Class
- SQLAllocStmt与SQLFreeStmt
- php 函数有命名空间吗_解析 ThinkPHP 的命名空间
- java 类 属性数量_跟我学java编程—Java类的属性与成员变量
- whisper客服源码_深入ethereum源码-whisper协议解读
- ijkplayer-hook协议实现分析
- 8: springMVC ModelAndView 作用与功能解析
- 创建 3D 控件_1.创建控件蓝图
- CSS颜色表示的几种方式
- Function与function的区别
- Windows小技巧 -- 已连接wifi密码查看
- 计算机硬件系统储存包括那些,硬件系统包括什么
- Quasi_Binary(模拟)
- lower_bound与upper_bound
- linux中fq格式转fa,fasta/fq文件处理万能工具——Seqkit学习记录
- 「GoTeam 招聘时间」星图比特 后端开发工程师(上海)
热门文章
- Excel宏的自动运行设置
- [Ext JS 7 ]7.5 自适应配置 - Responsive Configs
- 通过函数名字符串调用函数【C语言版】
- echo 多行_分享laravel-echo-server广播服务搭建-Laravel
- linux命令及其使用方法,Linux命令及其使用方法
- #6278. 数列分块入门 2
- 如何删除网关的session_微服务安全认证架构是如何演进而来的?坐好小板凳一起来听一听...
- JSP提交中文乱码的解决
- python tkinter实例_Python tkinter模版代码实例
- linux 常用正则表达式,Linux中基本正则表达式