我正在使用已有的SQL Server数据库在C#中创建一个ASP.NET MVC3项目。
SQL Server有不同的数据库,每个客户一个。每个客户数据库都有很多表,但我只对一个表感兴趣。
因此,我有兴趣从每个客户的同一个表中检索(而不是更新或删除)数据。
这是数据库配置示例:
DatabaseCustomerName1
- 表所需
DatabaseCustomerName2
- 表所需
DatabaseCustomerNameN
- 需要表格
问题是......我该如何创建模型?
知道如果我必须只针对一个客户这样做,我会根据表格的字段创建模型,我该如何管理拥有多个客户的情况?
提前致谢。
阿提拉
答案 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)
让我澄清你的问题,你是说你有 许多客户都拥有数据库?
因此...
数据库
对于每个客户,你说你有一张你想要访问的表,所以你有
所以你问,你怎么能创建一个适合任何客户访问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)
假设您正在使用实体框架是否安全?所有数据库中的模式是否相同?
您应该能够针对其中一个数据库创建模型。然后,只要您想要选择其他客户,就需要在创建数据上下文之前更改连接字符串中的初始目录(或等效)值。
我目前没有任何代码方便。这有帮助吗?