在C#中通过Entity Framework使用MySQL数据库的简单例子

参考文档:https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core-example.html

开发工具:visual studio 2017 社区版

开发环境:

1、创建一个.Net Core 项目

  2、使用NuGet添加引用【MySql.Data.EntityFrameworkCore】

在选择版本时应该注意自己的数据库版本,本人在此处选择的版本是【6.10.9】,不是最新的版本,选择好后点击安装即可

 

 

 

 3、添加数据模型实体类【LibraryModel】

using System.Collections.Generic;

namespace mysqlefcore
{
    public class Book
    {
        public string ISBN { get; set; }
        public string Title { get; set; }
        public string Author { get; set; }
        public string Language { get; set; }
        public int Pages { get; set; }
        public virtual Publisher Publisher { get; set; }
    }

    public class Publisher
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public virtual ICollection<Book> Books { get; set; }
    }
}
View Code

4、添加数据库连接文件【LibraryContext】

根据需要修改数据库连接字符串

 

using Microsoft.EntityFrameworkCore;
using MySql.Data.EntityFrameworkCore.Extensions;
namespace mysqlefcore
{
    public class LibraryContext : DbContext
    {
        public DbSet<Book> Book { get; set; }

        public DbSet<Publisher> Publisher { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySQL("server=localhost;database=library;user=root;password=Abcd@1234");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity<Publisher>(entity =>
            {
                entity.HasKey(e => e.ID);
                entity.Property(e => e.Name).IsRequired();
            });

            modelBuilder.Entity<Book>(entity =>
            {
                entity.HasKey(e => e.ISBN);
                entity.Property(e => e.Title).IsRequired();
                entity.HasOne(d => d.Publisher)
                  .WithMany(p => p.Books);
            });
        }
    }
}
View Code

5、修改【Program】类

using System;
using System.Text;
using Microsoft.EntityFrameworkCore;
namespace mysqlefcore
{
    class Program
    {
        static void Main(string[] args)
        {
            InsertData();
            PrintData();
            Console.ReadLine();
        }

        private static void InsertData()
        {
            using (var context = new LibraryContext())
            {
                // Creates the database if not exists
                context.Database.EnsureCreated();

                // Adds a publisher
                var publisher = new Publisher
                {
                    Name = "Mariner Books"
                };
                context.Publisher.Add(publisher);

                // Adds some books
                context.Book.Add(new Book
                {
                    ISBN = "978-0544003416",
                    Title = "The Lord of the Rings",
                    Author = "J.R.R. Tolkien",
                    Language = "English",
                    Pages = 1216,
                    Publisher = publisher
                });
                context.Book.Add(new Book
                {
                    ISBN = "978-0547247763",
                    Title = "The Sealed Letter",
                    Author = "Emma Donoghue",
                    Language = "English",
                    Pages = 416,
                    Publisher = publisher
                });

                // Saves changes
                context.SaveChanges();
            }
        }

        private static void PrintData()
        {
            // Gets and prints all books in database
            using (var context = new LibraryContext())
            {
                var books = context.Book
                  .Include(p => p.Publisher);
                foreach (var book in books)
                {
                    var data = new StringBuilder();
                    data.AppendLine($"ISBN: {book.ISBN}");
                    data.AppendLine($"Title: {book.Title}");
                    data.AppendLine($"Publisher: {book.Publisher.Name}");
                    Console.WriteLine(data.ToString());
                }
            }
        }
    }
}
View Code

6、运行程序显示结果

注:这个位置重复运行,修改了ISBN所以数据变成了4条,正常是2条

 

posted @ 2020-02-03 16:09  仲夏.net  阅读(3046)  评论(0编辑  收藏  举报