我想将 EF 层与我的模型分开。
我需要一个 EF Builder 像这样将我的模型发送给它(我为 mongodb 找到了此代码,但我需要 EF 核心):
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
},
这是 mongo 示例代码:
public static class Extensions
{
public static void AddMongo(this ContainerBuilder builder)
{
builder.Register(context =>
{
var configuration = context.Resolve<IConfiguration>();
var options = configuration.GetOptions<MongoDbOptions>("mongo");
return options;
}).SingleInstance();
builder.Register(context =>
{
var options = context.Resolve<MongoDbOptions>();
return new MongoClient(options.ConnectionString);
}).SingleInstance();
builder.Register(context =>
{
var options = context.Resolve<MongoDbOptions>();
var client = context.Resolve<MongoClient>();
return client.GetDatabase(options.Database);
}).InstancePerLifetimeScope();
builder.RegisterType<EFDbInitializer>()
.As<IEFDbInitializer>()
.InstancePerLifetimeScope();
builder.RegisterType<MongoDbSeeder>()
.As<IEFDbSeeder>()
.InstancePerLifetimeScope();
}
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();
}
我的问题是:有没有像 mongo 这样的 EF 解决方案?
mongoDb 的每一部分代码都是可用的。