[英]Generic EF Model Builder for Persistence DataLayer in .Net Core
我想通過.Net Core中的API將我的實體傳遞到我的SQL Server數據庫。 我需要一個可以添加到Container構建器的擴展或模塊,並幫助我在Startup.cs中的ConfigureServices方法中使用我根據我的需求找到了一個項目( https://github.com/devmentors/DNC-DShop ),但是此示例已使用MongoDB實現。 我想用SQLSERVER DB和EF ORM實現相同的功能。
這段代碼在啟動文件里面對於Mongo Sample:
builder.AddMongo();
builder.AddMongoRepository<Cart>("Carts");
builder.AddMongoRepository<Customer>("Customers");
builder.AddMongoRepository<Product>("Products");
applicationsetting.json文件中的此代碼:
"mongo": {
"connectionString": "mongodb://localhost:27017",
"database": "customers-service",
"seed": false
},
此代碼在Extension.cs中:
public static class Extensions
{
public static void AddMongoRepository<TEntity>(this ContainerBuilder builder, string collectionName)
where TEntity : IIdentifiable
=> builder.Register(ctx => new EFRepository<TEntity>(ctx.Resolve<IMongoDatabase>(), collectionName))
.As<IMongoRepository<TEntity>>()
.InstancePerLifetimeScope();
}
我將描述一個我正在研究的項目( Sppd.TeamTuner )的解決方案,它支持多個數據庫提供程序。
有一個* .DataAccess.EF.csproj項目,注冊所需的服務並配置DbContext。 重要的是要理解這個項目沒有注冊使用過的數據庫實例,它只是指定實體的存儲方式。 有趣的類是這里的部分TeamTunerContext.cs
類。 我在你的例子中添加了這個段落,看起來你和MongoDb一起使用,這不應該是必要的。
你正在尋找什么,告訴使用什么數據庫,正在一個專用的數據庫提供程序項目(MsSql,Sqlite,InMemory)中完成。 如果您想使用SQL, 這一行是相關的:
services.AddDbContext<TeamTunerContextMsSql>(options => options.UseSqlServer(databaseConfig.ConnectionString))
為此,正在引用包含擴展方法UseSqlServer
的nuget包Microsoft.EntityFrameworkCore.SqlServer 。 (如果您在項目中引用了asp.net核心,我認為已經包含了這個內容)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.