mysql 数据库映射 代码生成_entity framework数据库映射(ORM)

本文介绍了三种使用ORM框架进行数据库开发的模式:数据库优先、模型优先和代码优先。针对MySQL数据库,详细阐述了如何利用Entity Framework进行数据库映射,包括从数据库导入结构、创建模型DBContext代码以及代码优先创建数据库。还提到了不同数据库环境下Entity Framework的配置,如SQLite、Access等,并探讨了事务处理的几种方式。
摘要由CSDN通过智能技术生成

三种开发模式

ORM框架的对象关系映射

DataBase First (数据库优先,还没写代码)

Model First (模型优先edmx文件,数据库表未创建)

Code First (代码优先)

Sql Server安装:EntityFramework

Mysql安装:MySql.Data.Entity

数据库优先

选择ADO.NET实体对象,

来自数据库的EF设计器

导入数据库结构

模型优先

选择ADO.NET实体对象,创建edmx文件,需要安装vs数据库连接插件或者odbc驱动

mysql使用数据库连接字符串

空EF设计器

2a37c287b41fa10a51a1105e6834873e.png

右键菜单中,验证有无错误,连接数据库生成表数据

37dc841a883df15ef8b435af34a7d8e5.png

确保表包含主键,否则edmx生成错误,不会自动生成表

添加代码生成项,创建模型DBContext代码

using (Model1Container mc = new Model1Container())

{

mc.BlogsSet.Add(new Blogs()

{

Id = 1,

Name = "hello",

Title = "world"

});

mc.SaveChanges();

}

代码优先

选择ADO.NET实体对象,

空的Code first设计器

或者自己添加cs代码

[Table("Blog")]

public class Blog

{

[Key]

public int BlogId { get; set; } //字段在数据库中不显示

[Required] //不为空

[[StringLength(128)]]

public string Title { get; set; }

public DateTime CreateDate { get; set; }

}

[DbConfigurationType(typeof(MySqlEFConfiguration))]

public class BlogEntities : DbContext

{

public BlogEntities():base("name=mysqltest") { } //mysqltest是app.config中的key name

public DbSet Blogs { get; set; }

}

创建数据库

using(BlogEntities blog = new BlogEntities())

{

blog.Blogs.Add(new Blog() {

BlogId = 1,

Title = "test",

CreateDate = DateTime.Now

});

blog.SaveChanges();

}

nuget添加EntityFramework后,配置文件App.config文件中配置数据库连接

不同的数据库,需要在nuget中搜索不同的ef,mysql和sqlserver的ef不同

添加连接字符串,数据库名mysql,codefirst数据库重复不创建

ef自动创建数据库和表,在已有数据库中需要创建结构一致的表(这个操作和code first违背)

找不到provider

注意version版本号

找不到加载的文件

可能原因,nutget导致csproj文件依赖丢失,添加上就可以了。

orm访问access

nuget安装EF框架:entityframeworkcore.jet

nuget安装provider驱动:JetEntityFrameworkProvider

添加引用

using System.ComponentModel.DataAnnotations;//为了后续说明主键[Key]

using EntityFrameworkCore.Jet;

using Microsoft.EntityFrameworkCore;

//重写DbContext的配置函数

public MyDbContext(): base(){}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

//Microsoft.ACE.OLEDB.12.0或者Microsoft.Jet.OLEDB.4.0

optionsBuilder.UseJet(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\xxx\ConsoleApp1\data\d1.accdb;");

}

参考:https://blog.csdn.net/diaocang3578/article/details/101230788

sqlite

安装Microsoft.EntityFramework.Sqlite

private DataBaseSystem() : base()

{

Database.EnsureCreated();

}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

optionsBuilder.UseSqlite("Data Source=.\\DBFile\\" + DateTime.Now.ToString("yyyyMMdd") + ".db");

}

三种事务模式

SaveChanges,EF事务模式

DbContextTransaction,手动操作事务

TransactionScope,多数据库操作

entity

ms sql server:Microsoft.EntityFrameworkCore.SqlServer

sqlite:Microsoft.EntityFrameworkCore.Sqlite

mysql:MySql.Data.EntityFrameworkCore

access:EntityFrameworkCore.Jet

postgresql:Npgsql.EntityFrameworkCore.PostgreSQL

参考

https://www.cnblogs.com/1312mn/p/9239419.html

本文同步分享在 博客“怪力左手”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值