将我的Code First Entity Framework创建的数据库移动到Default Membership Provider数据库

时间:2012-06-08 17:13:49

标签: asp.net-mvc-3 database-design asp.net-membership ef-code-first membership-provider

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

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

另一个是我命名为SchoolContext的数据库,我希望SchoolContext中的所有信息都与默认成员资格提供程序中的所有数据存储在同一个数据库中。

以下是我的两个连接字符串:

<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" />

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

如果模型发生变化,我正在使用初始化程序重建数据库:

public class SchoolInitializer : DropCreateDatabaseIfModelChanges<SchoolContext>

任何时候我在模型中编辑某些东西并使用两个数据库方案时,这都可以正常工作。但是,当我想将两个数据库合并为一个数据库时,它无法正常工作。

我显然不知道如何连接两个数据库,因为我正在尝试做的事情不起作用,我应该如何正确设置mvc以将我的SchoolContext放入与所需信息相同的数据库中默认会员提供者?

1 个答案:

答案 0 :(得分:2)

两个可能的答案:

  1. 如果我理解你的意图,你试图使用两个独立的数据库 上下文并执行跨两者加入的查询。这是 在实体框架中不可能(截至本文撰写时)尽管可能 将来要考虑。有关更多细节,请参阅此帖子: https://stackoverflow.com/a/8536400/941058

    如果您需要加入信息,则需要在内存中进行 使用LINQ。基本上你需要存储外键 任何数据库中的信息,并在查询一个或时引用它 另一个。

  2. 如果您不是尝试跨上下文连接,而只是想在EF中使用默认成员资格提供程序,请考虑以下事项: http://efmembership.codeplex.com/