开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 原文: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>

 

 

 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JDBC连接MySQL数据库(一)
JDBC连接MySQL数据库(一)
29 0
动力节点MySQL数据库入门实战学习教程(mysql基础+高级)
今天这篇文章将详细列出Mysql的学习流程,这是学习mysql数据库前你要了解的~~~ 大部分的小伙伴自己在网上找mysql资料、还有数据库的视频教程,但是都过于碎片化,没有体系,导致大家不知道如何系统的学习,也不知道该如何零基础学习MySQL。
166 0
EntityFramework中常用的数据删除方式速度对比
EntityFramework中常用的数据删除方式速度对比http://www.bieryun.com/3375.html 最近在学EF,目前了解到删除操作有三种方式, 第一,官方推荐的先查询数据,再根据查询的对象,删除对象。
1275 0
EntityFramework中常用的数据删除方式速度对比
EntityFramework中常用的数据删除方式速度对比 最近在学EF,目前了解到删除操作有三种方式, 第一,官方推荐的先查询数据,再根据查询的对象,删除对象。 这是第一种,官方推荐 第二,自己创建一个对象,然后附加,然后删除。
1439 0
[Entity Framework] MySQL @ Entity Framework 6
原文 [Entity Framework] MySQL @ Entity Framework 6 要让MySQL能够用EF6,我花了一点时间,在此记录一下 安装元件 在设定档加入Provider 安装元件 从NuGet安装MySql.
967 0
+关注
杰克.陈
一个安静的程序猿~
10425
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载