如何在我的c#代码中模拟数据库表结构

本文关键字:模拟 数据库 结构 代码 我的 | 更新日期: 2023-09-27 18:18:06

我需要创建一个新的数据库表来保存一些业务规则,但是在实现之前需要一段时间(需要DBA)。与此同时,我想重新创建代码中的数据,这样我就可以继续编码和测试它,然后一旦准备好就切换到数据库。

一个例子是一个有10列的表结构,前4列包含唯一的组合,我将使用它来提取后6列中的相关值。

。公司,状态,类型,编号(我将有它们的值),然后,第5列,第6列,第7列,第8列,第9列,第10列,然后我将提取它们的值。

我看了哈希表,但它们似乎是一个键到一个值对,我不确定我是否可以使用4个键来获得6个值。

我知道这是模糊的,但希望有人能指出我在一个数据结构的正确方向,我可以使用(这只是后端顺便说一下,我不需要显示给用户)。

如何在我的c#代码中模拟数据库表结构

假设您不使用ORM,理想情况下您希望使用存储库模式,因为@DarrenYoung评论和@axlj提供了答案。你不应该把你的数据层和你的应用层紧密地连接在一起,这个模式会阻止你这样做。

但是,如果您只是想模拟一个数据库表,您可以使用DataSetDataTable类,它们分别提供内存中类似数据库和类似表的数据结构。

创建表就像这样简单:

DataTable myTable = new DataTable("myTable");
DataColumn[] key = new DataColumn[4];
key[0] = new DataColumn("Company", typeof(string));
key[1] = new DataColumn("State", typeof(string));
key[2] = new DataColumn("Type", typeof(string));
key[3] = new DataColumn("Number", typeof(int));
myTable.Add(key[0]);
myTable.Add(key[1]);
myTable.Add(key[2]);
myTable.Add(key[3]);
myTable.Add(new DataColumn("Column6", typeof(string)));
myTable.Add(new DataColumn("Column7", typeof(string)));
myTable.Add(new DataColumn("Column8", typeof(string)));
myTable.Add(new DataColumn("Column9", typeof(string)));
myTable.Add(new DataColumn("Column10", typeof(string)));
myTable.PrimaryKey = key;

你可以用数据表做更多的事情,但这只是设置它所需要的基本知识。此外,您提到HashTables只能有一个键,但是您可以使用Tuple作为键将多个值连接在一起,例如:

var myHashTable = new HashSet<Tuple<string,string,string,int>, object>();
//Create a key
var key1 = Tuple.Create<string,string,string,int>("blah INC", "NY", "blah", 15);
myHashTable.Add(key1, myObject);

程序与服务和存储库的接口

例如:

创建ICompanyRepository:

interface ICompanyRepository 
{
    IEnumerable<Company> GetCompanies();
}
class DummyCompanyRepository : ICompanyRepository 
{
    private Dictionary<int, Company> _data;
    public DummyCompanyRepository()
    {
         //populate your dictionary
    }
    public IEnumerable<Company> GetCompanies() 
    {
         // return all dictionary.values;
    }
}

然后您的控制器(或服务)可以接受ICompanyRepository,一旦DBA可用,您可以将我们的DummyRepositories交换为concreterespository。