繁体   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