Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架4.3在现有基础上的迁移;“共享”;数据库_Entity Framework_Database Schema_Entity Framework 4.3_Entity Framework Migrations - Fatal编程技术网

Entity framework 实体框架4.3在现有基础上的迁移;“共享”;数据库

Entity framework 实体框架4.3在现有基础上的迁移;“共享”;数据库,entity-framework,database-schema,entity-framework-4.3,entity-framework-migrations,Entity Framework,Database Schema,Entity Framework 4.3,Entity Framework Migrations,我们有一个巨大的数据库,为不同的web应用程序提供了不同的数据库模式。 例如:WebApp1使用Schema1.Tables。WebApp2使用Schema2.Tables等 现在,我正在开发一个新的web应用程序(WepApp3),它将使用EntityFramework4.3.1。WebApp3应该只关注Schema3,并且只使用那些属于Schema3的数据库对象。若我在WepApp3中创建了一些实体,那个么如何将这些实体作为schema3.tables迁移到数据库中?我还需要进行初始迁移吗

我们有一个巨大的数据库,为不同的web应用程序提供了不同的数据库模式。 例如:WebApp1使用Schema1.Tables。WebApp2使用Schema2.Tables等

现在,我正在开发一个新的web应用程序(WepApp3),它将使用EntityFramework4.3.1。WebApp3应该只关注Schema3,并且只使用那些属于Schema3的数据库对象。若我在WepApp3中创建了一些实体,那个么如何将这些实体作为schema3.tables迁移到数据库中?我还需要进行初始迁移吗


请帮助。

我认为在同一数据库中不可能有多个EF模型。EF不应该尝试接触与其模型无关的表,但是如果您想向同一数据库添加另一个EF应用程序,您会遇到麻烦,因为它们会尝试共享相同的元数据表

首先使用代码生成新模型时,您可以指定它们应该成为DbContext中的一部分的模式:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<MyEntity>().ToTable("MyEntity", "Schema3");
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“MyEntity”、“Schema3”);
}

如果没有共享应用程序,是否可以选择将模式迁移到不同的数据库中?

这似乎可行。我从一个现有的数据库开始。创建了一个mvc应用程序(app1),包含两个模型。然后我在数据库中为这个应用程序创建了一个模式。我根据您的评论为模型指定了模式。然后,我使用基于代码的迁移脚本来更新数据库。迁移脚本在新模式下创建了2个表,而不会损坏现有内容。我注意到EF创建了一个迁移历史记录表,其中有一行包含更改信息。
然后,我创建了另一个应用程序,一个新的模式,并在迁移脚本中稍加调整,重复迁移过程。脚本有代码可以重新创建2个app1表。我从脚本中删除了那个代码。EF随后成功地在新模式下创建了新表,并在_MigrationHistory表中创建了新行,其中包含有关新更改的信息。所有现有资料保持不变,包括数据。

嗨,Richard,感谢您的快速回复。当你说元数据表时,你指的是元数据表吗?我相信EF4.3已经摆脱了EDMS元数据表。相反,在执行代码第一次迁移后,将出现_umigrationhistory表。此表是否可以位于某个模式下而不是默认dbo模式下?不幸的是,这不是一个选项:(.我个人不喜欢这样的共享数据库,但这不是我的决定。谢谢..我指的是EdmMetaData或_MigrationHistory表,具体取决于您使用的方法。我也一直在寻找一种方法,在一个数据库中包含两个EF模型,但我认为这是不可能的。我们的反馈网站上有这样的请求:确保不要加上你的选票!