0

我正在开发 .net 框架控制台代码,它可以处理比特。我想在完成生成实体后实现一个存储库来保存我的实体,这样我就不必再次生成实体。首先,我希望存储库将数据文件写入我的本地文件系统,然后如果需要,稍后放置一个更强大的 (RMDBS) 后端。当然,我也希望能够对存储库进行单元测试/模拟。

我在 github 上找到了SharpRepository项目,并想利用它,而不是滚动我自己的实现。XMLRepository 类看起来像我想要实现的类,但我不确定如何实现,并且 wiki 不包含关于它的文档。

你如何XmlRepositorySharpRepository图书馆使用?

4

2 回答 2

1

我推送了一个分支,您可以在其中找到SharpRepository.Samples.CoreMvc使用 XmlRepository 运行的 ASP.NET Core。

你可以在这里找到它https://github.com/SharpRepository/SharpRepository/tree/sample/xml

最后一次提交包含一些配置以使其正常工作。 https://github.com/SharpRepository/SharpRepository/commit/77c684de40fe432589c940ad042009bbd213f96c

让我更新以使 XmlRepository 稳定发布。

顺便说一句,我使用 InMemoryRepository 进行测试。Xml 序列化会限制模型的属性,并且很难与不同的 DBRMS 保持一致。

于 2019-06-27T15:28:53.713 回答
0

从四处寻找,这就是我正在使用的东西,我认为它可以满足我在问题中所述的需求:

using Microsoft.Extensions.Caching.Memory;
using SharpRepository.Repository;
using SharpRepository.XmlRepository;
using SharpRepository.Repository.Caching;
using SharpRepository.EfRepository;

public class MyEntity
{
    public DateTime EventDateTime;
    public Dictionary<string, string> attributes = new Dictionary<string, string>();
}
static void Main(string[] args)
{
    MemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());
    InMemoryCachingProvider inMemoryCachingProvider = new InMemoryCachingProvider(memoryCache);
    IRepository<MyEntity> myRepo = new XmlRepository<MyEntity>(@"C:\temp\MyLocalRepo", new StandardCachingStrategy<MyEntity>(inMemoryCachingProvider));

    // When I am ready to further develop the data layer, I can swap the repo out for a different one
    //IRepository<MyEntity> myRepo = new EfRepository<MyEntity>(new System.Data.Entity.DbContext("myConnectionString"));

    // And my logic that interacts with the repository will still work
    myRepo.Add(new MyEntity { EventDateTime = new DateTime(2019, 06, 16), attributes = new Dictionary<string, string> { { "WithAttrbutes", "AndTheirValues" } } });
}
于 2019-06-16T16:35:58.137 回答