我有问题。我正在使用ASP.NET MVC创建一个webAPI,我有三个不同的项目,有三个独立的数据库。
我有一种方法可以在一个表中进行插入。该表存在于三个数据库中。
客户端以字符串形式向我发送项目。
我的问题是:
1 - 我应该将webAPI划分为三个不同的URL吗? 2-我不想以这种方式在控制器中创建一个开关或if-elseif:
switch (project) {
case project1:
objectdatabase1
case project2:
objectdatabase2
case project3
objectdatabase3
}
因为我认为它违反了OPEN CLOSED Solid原则。
3-此外,我想将de数据库对象注入de控制器,Unity执行依赖注入。
有什么想法以最好的方式做到这一点?
谢谢!
答案 0 :(得分:0)
根据您用于连接这些数据库的内容,您可以使用命名的connectionStrings。将它们命名为项目(客户端发送的任何字符串)或具有一些约定(如param +" _connString")。
然后让您的数据库访问对象使用该特定的connectionString打开连接,并运行您想要的任何查询。
使用专门的命名约定(如Project1_SomeKeyword_connectionString
,Project2_SomeKeyword_connectionString
等)仅针对此案例将限制潜在的安全问题,以防有人恶意尝试猜测不应该用于的connectionString名称那个目的(对于你的内部数据库或其他)。
如果您使用的是纯SQL访问对象,它将运行您要求的任何查询,那就没问题了。如果您正在使用某些依赖于特定表对象映射的ORM,则可能需要为此目的创建该ORM,如果其余DB不同。
您还提到您可能要注入数据库对象。但是,在执行控制器操作之前不会进行注入吗?这意味着您必须事先知道您正在使用哪个DB,并且您已经说过在动作调用期间提供了项目名称。您可能需要在注射期间检查请求,这会使一切变得复杂。
答案 1 :(得分:0)
如何创建多个EntityFramework模型?因此,每个模型都将连接到不同的数据库。