У меня есть .NET
решение, которое следует за Onion Architecture
.
В соответствии с рекомендациями этого типа архитектуры, слой Core
, где находятся мои сущности, должен быть абстрактным и не ссылаться на какую-либо внешнюю библиотеку.
Я также хочу подключиться кMongoDb
база данных, которая требует, чтобы атрибут Id
сущности имел тип ObjectId
, который является типом Монго.
namespace MyApp.Core.Entities.Base
{
using System;
**using MongoDB.Bson;** // This is an external library that should not be referenced by Core
public class BaseEntity
{
public **ObjectId** Id { get; set; }
public DateTime? CreationDate { get; set; }
}
}
Так что, если я добавлю этот тип атрибута к сущности в Ядреслой, это будет означать, что мне придется ссылаться на MongoDb внутри моего базового слоя, и это будет нарушением руководящих принципов Onion Architecture.Я полагаю, что моим решением было бы создать какой-то частичный класс за пределами слоя Core (что невозможно), внутри которого я добавлю свое свойство ObjectId.
Любая идея о том, как мне этого добиться.