如何在我的C#代码

时间:2016-11-15 15:39:14

标签: c# asp.net oracle mvp

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

一个示例是一个包含10列的表结构,前4列包含我将用于提取最后6列中关联值的唯一组合。

E.g。 公司,州,类型,编号(我将得到的值),然后,第5列,第6列,第7列,第8列,第9列,第10列,然后我将拉取值。

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

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

2 个答案:

答案 0 :(得分:1)

假设您没有使用ORM,您最好使用repository pattern,因为@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;

您可以使用DataTables做更多事情,但这只是设置它所需的基础知识。此外,您提到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);

答案 1 :(得分:0)

编程到与服务和存储库的接口。

例如:

创建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 for ConcreteRepositories。