0

我有一个我构建的 ASP.NET MVC3 应用程序,它有两个数据库。

一个是参考默认成员资格提供程序,它是在我构建应用程序时自动创建的。

另一个是我命名为 SchoolContext 的数据库,我希望其中的所有信息SchoolContext与 Default Membership Provider 中的所有数据都存储在同一个数据库中。

这是我的两个连接字符串:

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
<add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0" />

我尝试重命名ApplicationServicesSchoolContext然后注释掉我的第二个连接字符串,我可以加载并使用默认会员提供程序“登录”就好了,但是每当我需要将数据库排队以获取存储在原始数据库中的信息时SchoolContext,我会收到错误说明该模型不存在等。. 并且数据不是在包含来自默认成员资格提供程序的信息的数据库中构建的。

如果模型发生更改,我将使用初始化程序来重建数据库:

public class SchoolInitializer : DropCreateDatabaseIfModelChanges<SchoolContext>

每当我在模型中编辑某些内容并且我正在使用两个数据库方案时,这都可以正常工作。但是,当我想将两个数据库合二为一时,它不起作用。

我显然不知道如何连接两个数据库,因为我试图做的事情不起作用,我应该如何适当地设置 mvc 以将我SchoolContext放入与默认成员资格提供程序所需的信息相同的数据库中?

4

1 回答 1

2

两个可能的答案:

  1. 如果我理解您的意图,您正在尝试使用两个单独的数据库上下文并执行连接它们的查询。这在实体框架中是不可能的(在撰写本文时),尽管将来可能会考虑。有关更多详细信息,请参阅此帖子: https ://stackoverflow.com/a/8536400/941058

    如果您需要合并信息,则需要使用 LINQ 在内存中完成。本质上,您需要将外键信息存储在任一数据库中,并在查询其中一个时引用它。

  2. 如果您不尝试跨上下文加入,而只是想将默认成员资格提供程序与 EF 一起使用,请考虑: http ://efmembership.codeplex.com/

于 2012-06-12T17:54:33.603 回答