日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net EF框架 MySql实现实例

發(fā)布時間:2024/10/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net EF框架 MySql实现实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.nuget中添加包EF和MySql.Data.Entity

2.config文件添加如下配置

1.配置entitframework節(jié)點(一般安裝EF時自動添加)

?

<entityFramework><defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"><parameters><parameter value="mssqllocaldb" /></parameters></defaultConnectionFactory><providers><provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /><provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers></entityFramework>

?


2.配置system.data節(jié)點(一般安裝MySql.Data.Entity時自動添加)

?

<system.data><DbProviderFactories><remove invariant="MySql.Data.MySqlClient" /><add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories></system.data>

?


3.添加連接串節(jié)點(以實際情況修改庫名、密碼等屬性)

?

<connectionStrings><add name="MyContext" connectionString="Data Source=localhost;port=3306;Initial Catalog=aceadmin;user id=root;password=xxx;" providerName="MySql.Data.MySqlClient" /></connectionStrings>

?

3.添加實體類

添加AccountUser類

1 using System; 2 using System.ComponentModel.DataAnnotations; 3 using System.ComponentModel.DataAnnotations.Schema; 4 5 namespace EFCodeFirst.Entity 6 { 7 [Table("user")] 8 public class AccountUser 9 { 10 /// <summary> 11 /// 用戶ID 12 /// </summary> 13 [Column("ID")] 14 [Key] 15 public int AccountUserId { get; set; } 16 17 /// <summary> 18 /// 用戶名 19 /// </summary> 20 public string Name { get; set; } 21 22 /// <summary> 23 /// 年齡 24 /// </summary> 25 public Nullable<int> Age { get; set; } 26 27 /// <summary> 28 /// 性別 29 /// </summary> 30 public Nullable<bool> Sex { get; set; } 31 32 } 33 }

?

注:特性“Table”指定數(shù)據庫中與該實體產生映射的表名,默認不添加系統(tǒng)會去數(shù)據庫中尋找表名為:“類名+s”的表,找不到會報錯。

特性“Column”來指定映射表中的列名,如果屬性名與列名相同,則不用添加,系統(tǒng)默認屬性名與列名一致。

以上方式為Data Annotations模式(數(shù)據注解)映射數(shù)據庫方法。

EF還提供Fluent API配置來映射數(shù)據庫,下面會講到。

4.添加Context實體對象

using System.Data.Entity;namespace EFCodeFirst {public class DContext : DbContext{/// <summary>/// 添加構造函數(shù),name為config文件中數(shù)據庫連接字符串的name/// </summary>public DContext() : base("name=MyContext"){}#region 數(shù)據集public DbSet<AccountUser> AccountUsers { get; set; }#endregion } }

?


定義新的上下文類DContext集成DbContext

這里聲明了與數(shù)據庫映射的對象AccountUser,以后可以直接用屬性AccountUsers來進行對數(shù)據庫的操作

注:一定要添加構造函數(shù)并指明config文件中數(shù)據庫連接字符串的name,否則系統(tǒng)將把數(shù)據庫默認指定到VS自帶的數(shù)據庫中

5.寫一個簡單的插入數(shù)據代碼運行看結果

class Program{static void Main(string[] args){try{var user = new AccountUser(){Name = "Test",Sex = true,Age = 29};using (var context = new DContext()){context.AccountUsers.Add(user);context.SaveChanges();var accountUsers = context.AccountUsers.ToList();}Console.Write("{0}", user.AccountUserId);}catch (Exception ex){Console.Write("{0}", ex);}Console.ReadLine();}}

?


至此EF框架連接MySql數(shù)據庫已經成功

6.使用Fluent API配置EF映射關系

1.添加新類省、市

public class Provice{/// <summary>/// 省份ID/// </summary>public int ProviceId { get; set; }/// <summary>/// 省份名/// </summary>public string ProviceName { get; set; }/// <summary>/// 省份下城市/// </summary>public List<City> Citys { get; set; }}public class City{/// <summary>/// 城市ID/// </summary>public int CityId { get; set; }/// <summary>/// 所屬省份ID/// </summary>public int ProviceId { get; set; }/// <summary>/// 城市名稱/// </summary>public string CityName { get; set; }/// <summary>/// 所屬城市/// </summary>public Provice ProviceData { get; set; }}

?


2.添加Fluent API配置類,繼承自EntityTypeConfiguration對象

using System.Data.Entity.ModelConfiguration;namespace EFCodeFirst {public class ProviceConfiguration : EntityTypeConfiguration<Provice>{public ProviceConfiguration(){ToTable("provice") //映射表.HasKey(q => q.ProviceId) //指定主鍵.HasMany(q => q.Citys).WithRequired(q => q.ProviceData).HasForeignKey(q => q.ProviceId); //配置一對多關系 }} }

?

注:由于這里添加了外鍵,則必須用WithRequired方法而不能用WithOption方法,否則報錯

using System.Data.Entity.ModelConfiguration;namespace EFCodeFirst {public class CityConfiguration : EntityTypeConfiguration<City>{public CityConfiguration(){ToTable("city").HasKey(q => q.CityId).Property(q => q.ProviceId).IsRequired();}} }

?

一對多關系只用在一端配置,provice處配置后不需要在city端再配置

3.將Fluent API配置添加到DContext類中,重寫OnModelCreating方法

public class DContext : DbContext{/// <summary>/// 添加構造函數(shù),name為config文件中數(shù)據庫連接字符串的name/// </summary>public DContext() : base("name=MyContext"){}#region 數(shù)據集public DbSet<AccountUser> AccountUsers { get; set; }public DbSet<Provice> Provices { get; set; }public DbSet<City> Citys { get; set; }#endregion#region Fluent API配置protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Configurations.Add(new ProviceConfiguration());modelBuilder.Configurations.Add(new CityConfiguration());}#endregion}

?


4.main方法中級聯(lián)添加省、市

static void Main(string[] args){try{var provice = new Provice{ProviceName = "河南省",Citys = new List<City>(){new City() { CityName = "安陽"},new City() { CityName = "鄭州"},new City() { CityName = "洛陽"},}};using (var context = new DContext()){context.Provices.Add(provice);context.SaveChanges();var provices = context.Provices.Include("Citys").ToList();}Console.Write("{0}", provice.ProviceId);}catch (Exception ex){Console.Write("{0}", ex);}Console.ReadLine();}

?


可以看到數(shù)據庫中同時向省表和市表中添加了相關數(shù)據

?

7.EF的Data Annotations與Fluent API是可以同時使用的,但同效果的配置只需要在二者之一中配置就好。

轉載于:https://www.cnblogs.com/pengdylan/p/6383733.html

總結

以上是生活随笔為你收集整理的.net EF框架 MySql实现实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。