ASP.NET MVC 3已经在不同的数据库上构建了SQL Server

时间:2011-07-01 13:39:43

标签: c# database asp.net-mvc-3 scaffolding

我正在使用已有的SQL Server数据库在C#中创建一个ASP.NET MVC3项目。

SQL Server有不同的数据库,每个客户一个。每个客户数据库都有很多表,但我只对一个表感兴趣。

因此,我有兴趣从每个客户的同一个表中检索(而不是更新或删除)数据。 这是数据库配置示例:
DatabaseCustomerName1
  - 表所需

DatabaseCustomerName2
  - 表所需

DatabaseCustomerNameN
  - 需要表格

问题是......我该如何创建模型?

知道如果我必须只针对一个客户这样做,我会根据表格的字段创建模型,我该如何管理拥有多个客户的情况?

提前致谢。

阿提拉

4 个答案:

答案 0 :(得分:1)

你应该有一个Repository类的接口 例如,每个客户数据库的不同实现

    internal interface IProductRepository
{
    IEnumerable<Product> GetAll();
}

class ProductRepositoryCustumerOne : IProductRepository
{
    public IEnumerable<Product> GetAll()
    {
        //code to retrieve data
    }
}

class ProductRepositoryCustumerTwo : IProductRepository
{
    public IEnumerable<Product> GetAll()
    {
        //code to retrieve data
    }
}

在您可以向IoC容器注入您需要的实现之后

答案 1 :(得分:0)

让我澄清你的问题,你是说你有 许多客户都拥有数据库?

因此...

数据库

  • 客户A
  • 客户B

对于每个客户,你说你有一张你想要访问的表,所以你有

  • 客户A&gt; TheTable
  • 客户B&gt; TheTable

所以你问,你怎么能创建一个适合任何客户访问TheTable的模型?

这是对的吗?

答案 2 :(得分:0)

如何根据选择链接在所有表上创建Sql View:

 Select 'Customer 1' as Customer, c.* from FirstDb.dbo.Cusotmers c
 Union Select 'Customer 2' as Customer, c.* from SecondDb.dbo.Cusotmers c
 Union ...

你可以用这样的方式处理这个观点。 EF或linq to sql。

答案 3 :(得分:0)

假设您正在使用实体框架是否安全?所有数据库中的模式是否相同?

您应该能够针对其中一个数据库创建模型。然后,只要您想要选择其他客户,就需要在创建数据上下文之前更改连接字符串中的初始目录(或等效)值。

我目前没有任何代码方便。这有帮助吗?