2012-07-25 49 views
1

背景:我已经编写了一个CLR数据库项目,该项目包含我创建的数据存储的所有业务逻辑。它被部署在我的SQL Server中,它被各种CLR存储过程引用,它们负责数据导入。 现在我正在开发Web前端,并为此开始编写一个MVC3项目。 由于我已经有完整的业务逻辑(对象定义,质量检查),我想在我的MVC应用程序中使用代码。在MVC3 Web应用程序中集成C#SQL CLR数据库项目?

我想最好的方法是将BusinessLogic CLR项目添加到我的MVC解决方案中,并在MVC项目中引用它。这很好,我可以使用该代码。有了一定的耐心,我可以渡过难关。

问题:

1)当我要调试的MVC解决方案,Visual Studio中总是要部署CLR大会。我通过在调试之前卸载MVC解决方案中的CLR项目来解决这个问题。

2)充分利用我SQLServer的一个UserDefinedType Reference也似乎是一个问题:

3)我与我的MVC前端两次部署相同的代码,我的服务器上,一旦与SQL大会,并一次。

问:

  • 是否有一个最佳实践的使用SQL Server组件以及在前端项目相同的代码?也许有办法在SQL Server上引用已部署的BusinessLogic程序集?业务逻辑中的任何更改都应该既可以用于前端代码,也可以用于SQL Server上的DataImport工具。目前的解决方案感觉不对,因为我必须在我的服务器上部署相同的代码2x,一次使用SQL程序集,一次使用我的MVC前端。

任何部分答案(即有意义的微光)将不胜感激。我非常喜欢这个。

回答

2

业务逻辑代码可以在它自己的类库和项目中。

CLR数据库解决方案包含了这个BL项目,而MVC解决方案也包含了BL项目。但是这两种解决方案是分开的。这似乎解决了眼前的问题 - 尽管如果你改变BL代码,那么你必须做2次部署......

这可能只是这个BL层不在正确的地方。如果这个BL住在某个地方的服务中,那将会很好,并且CLR procs和MVC项目都在这个地方访问它。

+0

我同意“BL层不住在正确的地方”部分。 SQL Server(在大多数情况下)不是做业务逻辑的正确位置,特别是CLR。 – 2012-07-25 18:38:30

+0

你可以提供一个暗示你的意思是“服务的地方”。我进一步发布了在BusinessLogic中引用的UDT问题。 (因为需要管理写入数据,所以UDT也应该在前端以及服务器组件中可用。)是否可以将UserDefinedType Assembly从服务器链接到独立的BusinessLogic类库? – 2012-07-26 09:00:36

+0

我搜索了一下,并明白,“服务某处”的意思就是像Windows Communication Foundation Service(.NET 4)。它看起来像我可以将服务引用添加到我的CLR程序集以及我的MVC应用程序。现在我只需要找出时间来尝试一下:)Thx的提示。 – 2012-07-26 15:34:52

相关问题