1

我正在 ASP.NET MVC 3 中创建一个 Web 应用程序。我想使用 SQL Server DB(开发中的 SQL Server Express)来存放成员资格、角色和其他相关信息。到目前为止,我一直依赖于自动生成的aspnetdb.mdf数据库,并且能够毫无问题地创建新用户、登录和注销。但是,我有另一个数据库,其中包含表示应用程序使用的类的表(使用 Entity Framework 4,这些类是基于数据库自动创建的)。

所以,我有两个数据库,但只想拥有一个,因为我不认为我的网站有大量用户,而且我真的不认为需要两个数据库。就我而言,aspnetdb.mdf数据库还没有真正的数据,所以我不需要担心保留这些数据。因此,解决方案可能是结合两个数据库,或者只是不aspnetdb.mdf首先创建数据库,而是从一开始就使用另一个数据库来容纳用户和成​​员表等。

我的问题是多部分的:

1)如果我保留了两个数据库,有没有办法从我的另一个数据库中引用数据库aspnet_Users中的表作为外键?aspnetdb.mdf我做了一些搜索,似乎这要么不可能,要么很不方便。如果这是可能的,这是一个坏主意吗?

2)我已经广泛阅读了如何将这些组合到一个数据库中,并且我已经看到了很多关于它的文章(包括这里的 SO)。看起来最好的(或至少是好的)方法是使用 aspnet_regsql.exe 工具来配置我的“其他数据库”,然后摆脱aspnetdb.mdf数据库并更改我的 Web.config 文件中的连接字符串引用我将保留的其他数据库。

当我遇到以下声明时,我正要开始进行更改:

Aspnet_regsql 工具不应与在用户实例模式下运行的本地安装的 SQL Server Express 一起使用(即,连接字符串包含 User Instance=true)。
这里找到。我的 Web.config 文件user instance=true到处都是。这是否意味着我不需要运行 aspnet_reqsql 工具?我可以只更改 Web.config 连接字符串并删除aspnetdb.mdf数据库吗?上线后是否需要将其更改user instance=true为其他内容?

3) 我已经到了假设我的问题的解决方案涉及 aspnet_regsql 工具以及对 Web.config 文件的一些更改的地步。如果有更简单/更好的解决方案,请告诉我。

澄清一下,我现在正在使用 SQL Express、VS Express 2010 和 ASP.NET MVC 3 进行开发。最终我会将站点移至托管生产环境。因此,我实施的任何解决方案都需要在我上线时继续使用。

就像我说的,我在互联网上做了很多阅读。我已经开始对所有这些东西如何协同工作形成一些想法,但我已经到了这样的地步:我阅读的越多,我的问题就越多,而明确的方向却让我望而却步。谢谢你的帮助。

4

1 回答 1

0

使用一个分贝。如果您使用的是实体框架 db-first,您可以在 SSMS 中创建所需的表,针对此 db 运行 aspnet_regsql 工具,然后在 Visual Studio 中从这些表中生成一个 .edmx 文件。完成后,您可以使用 AspNetMembershipProvider 作为 API 从代码中与用户交互,或者您可以直接从 dbcontext 类中获取用户。我建议使用 AspNetMembership 提供程序来创建用户。(无论如何,在新的 MVC 3 项目中有很多样板代码),但在特殊情况下,您可能需要直接从您的上下文中与 users 表进行交互。很高兴有选择,但尽量保持一致。

在 SSMS 中,我会编写出您的数据库架构的脚本,然后在您准备好上线时针对生产系统运行它。还有一个用于数据更改的脚本。将这些置于源代码控制之下。

如果您使用的是 Code-First,那么有很多方便的 nuget 包为您的成员资格类 dto 预定义了代码,然后您可以在它们旁边添加自己的 dto 类。

希望这可以帮助。

于 2012-07-30T18:13:00.647 回答