0

モデルから EF レイヤーを分離したい。

このようにモデルを送信するにはEFビルダーが必要です(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
  },

モンゴのサンプルコードは次のとおりです。

ここに画像の説明を入力

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 のコードのすべての部分が利用可能です。

4

1 に答える 1