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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

.netcore mysql_.netcore基于mysql的codefirst

發布時間:2023/12/9 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .netcore mysql_.netcore基于mysql的codefirst 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.netcore基于mysql的codefirst

此文僅是對于netcore基于mysql的簡單的codefirst實現的簡單記錄。示例為客服系統消息模板的增刪改查實現

第一步、創建實體項目,并在其中建立對應的實體類,以及數據庫訪問類

須引入Pomelo.EntityFrameworkCore.MySql和Microsoft.EntityFrameworkCore

///

///消息模板///

public classMessatgeTemplate

{///

///id///

[Key]public System.Guid Id { get; set; }///

///名稱///

[MaxLength(250)]public string Name { get; set; }///

///關鍵字///

[MaxLength(500)]public string Keywords { get; set; }///

///內容///

public string Content { get; set; }///

///語言///

[MaxLength(80)]public string CultureCode { get; set; }///

///類別///

[MaxLength(250)]public string Category { get; set; }///

///備注信息///

public string Remark { get; set; }///

///是否啟用///

public bool Enabled { get; set; }///

///創建時間///

public DateTime Created { get; set; }///

///最近修改時間///

public DateTime LastModified { get; set; }

}

///

///

///

public classCustomerServiceContext : DbContext

{public CustomerServiceContext(DbContextOptionsoptions)

:base(options)

{

}///

///配置///

///

protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)

{base.OnConfiguring(optionsBuilder);

}public virtual DbSet MessatgeTemplate { get; set; }

}

第二步、創建業務服務項目,添加對應的業務處理類

///

///客服業務統一接口///

public interfaceICustomerServicerSerice

{

}

///

///模板業務類///

public classMessageTemplateService : ICustomerServicerSerice

{privateCustomerServiceContext _CustomerServiceContext;publicMessageTemplateService(CustomerServiceContext customerServiceContext)

{this._CustomerServiceContext =customerServiceContext;

}///

///創建模板///

public voidCreateMessageTemplate()

{//todo create

}///

///修改模板///

public voidModifyMessageTemplate()

{//TODO modified

}///

///獲取模板///

///

public ListGetMessageTemplate()

{//TODO根據傳入參數查詢模板

return null;

}///

///刪除///

public voidDeleteMessageTemplate(Guid id)

{var template = _CustomerServiceContext.MessatgeTemplate.FirstOrDefault(p => p.Id ==id);if (template != null)

{

_CustomerServiceContext.MessatgeTemplate.Remove(template);

_CustomerServiceContext.SaveChanges();

}

}///

///批量設置是否可用///

///

///

public void BatchEnableTemplate(List ids, boolenabled)

{//TODO set enabled

}

}

第三步、創建webapi項目,并在其中建立對應的實體類,以及數據庫訪問類

須引入Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.Design.

1、在appsettings.json中配置數據連接

"ConnectionStrings": {"CumstomerServiceConnection": "server=localhost;port=3306;database=CustomerServiceCenter;uid=root;pwd=root23456;CharSet=utf8"}

2、修改startup.cs類的ConfigureServices注入db訪問類

services.AddDbContext(p => p.UseMySql(Configuration.GetConnectionString("CumstomerServiceConnection")));

3、設置該webapi項目為啟動項目,在nuget程序包控制臺選擇第一步中創建的實體類項目依次運行如下腳本創建數據庫

1)add-migration init

2) update-database

上面的兩個命令中,add-migration表示添加數據遷移,其實就是將實體變更轉換成sql(add-migraion后面的init只是個名稱,可以自行定義),update-database是將生成的數據遷移信息更新到數據庫

另外一些可能用到的命令

remove-migration? ---將最近生成的遷移(沒有更新到數據庫的)移除掉

script-migration --生成數據庫遷移相應的腳本

------------------------

命令執行成功后,就可以在數據庫中找到創建好的數據庫和表了

script-datatable可以生成數據庫腳本語句

好了,以上就完成了codefirst的簡單操作了。不過跟著第二步的業務類其實沒啥關系!!!如果只是進行數據遷移確實沒有service層什么事,但是業務邏輯要走通,實現crud,業務層還是必須的。

---------------------------------------------------------------------------------------------------------------------

以下就順帶寫下controller中引入service,實現簡單的刪除業務邏輯(其它的業務邏輯---略)

在webapi創建MessageTemplateController

[Route("api/[controller]")]

[ApiController]public classMessageTemplateController : ControllerBase

{privateMessageTemplateService _MessageTemplateService;publicMessageTemplateController(MessageTemplateService messageTemplateService)

{this._MessageTemplateService =messageTemplateService;

}///

///刪除///

///

[HttpPost("DeleteMessageTemplate")]public voidDeleteMessageTemplate(Guid id)

{

_MessageTemplateService.DeleteMessageTemplate(id);

}//TODO其他操作:查詢,新增,修改等

}

修改Startup.cs類,注入服務

public voidConfigureServices(IServiceCollection services)

{

services.AddControllers();

services.AddDbContext(p => p.UseMySql(Configuration.GetConnectionString("CumstomerServiceConnection")));#region 注入業務服務Assembly assembly= Assembly.Load("Qingy.DotNetCoreStudy.CustomerServiceService");

List types = assembly.GetTypes().Where(u => u.IsClass && !u.IsAbstract && !u.IsGenericType&& u.GetInterfaces().Any(p => p == typeof(ICustomerServicerSerice))

).ToList();foreach (var item intypes)

{

services.AddTransient(item);

}#endregion}

綜合以上,就可以將api到db的完整實現了。

總結

以上是生活随笔為你收集整理的.netcore mysql_.netcore基于mysql的codefirst的全部內容,希望文章能夠幫你解決所遇到的問題。

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