我想将实体从.Net Core中的API传递到我的SQL Server数据库。我需要一个可以添加到“容器”构建器的扩展或模块,并帮助我在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();
}
答案 0 :(得分:0)
我将使用当前正在研究的项目(Sppd.TeamTuner)描述一个解决方案,该项目支持多个数据库提供程序。
有一个* .DataAccess.EF.csproj项目,注册所需的服务并配置DbContext。重要的是要理解,该项目不会注册使用的数据库实例,它仅指定如何存储实体。您感兴趣的类都是TeamTunerContext.cs
部分here类。我已在您的示例中添加了此段,因为您似乎将其与MongoDb耦合在一起,这不是必需的。
您正在寻找的信息(告诉使用什么数据库)是在一个专用的数据库提供程序项目(MsSql,Sqlite,InMemory)中完成的。当您要使用SQL时,this line是相关的:
services.AddDbContext<TeamTunerContextMsSql>(options => options.UseSqlServer(databaseConfig.ConnectionString))
为此,正在引用包含扩展方法UseSqlServer
的nuget软件包Microsoft.EntityFrameworkCore.SqlServer。 (如果您在项目中引用了asp.net核心,我认为它已经包含在内)。