簡體   English   中英

.Net Core中用於持久性DataLayer的通用EF模型構建器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM