我有以下课程:
public class BaseContainer
{
public BaseItem item {get; set;}
}
public class ExtendedContainer : BaseContainer
{
new public ExtendedItem item {get; set;}
}
public class BaseItem{
public string Name { get; set; }
}
public class ExtendedItem : BaseItem
{
public string Surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我有以下说明:
ExtendedItem ei = new ExtendedItem { Name = "MyName", Surname = "MySurname" };
ExtendedContainer ec = new ExtendedContainer { item = ei };
BaseContainer bc = ec;
string temp = …
Run Code Online (Sandbox Code Playgroud) 我创建了一个包含在主MVC3 Web应用程序中的模块。该模块打包成NuGet软件包,可以通过NuGet进行安装和卸载。主站点和模块都使用Code First,EF> = 4.3
要创建程序包,我有另一个MVC3站点,并且所有功能都在一个区域内,因此,要创建程序包,我只需要打包库,视图和所有需要的文件。数据库迁移在项目中工作正常,并且程序包创建良好。
现在,我通过NuGet将软件包安装在主站点中。该站点位于另一个解决方案中,该解决方案有两个项目:
软件包已正确安装,并且Area,Area视图和库已正确安装。
现在的问题是我如何更新数据库?我首先尝试运行“ Update-Database”,但收到消息:
“在程序集'MyProject.Web.UI'中未找到迁移配置类型。(在Visual Studio中,您可以使用程序包管理器控制台中的Enable-Migrations命令来添加迁移配置)。”
然后,我尝试通过“ Enable-Migrations”启用迁移,但又收到了另一条消息:
“在程序集'MyProject.Web.UI'中找不到上下文类型。”
我也尝试仅运行该站点,看看是否自动应用了更改,但出现了带有典型消息的异常页面:
“自创建数据库以来,支持'NugetPackageDbContext'上下文的模型已更改。请考虑使用代码优先迁移来更新数据库”
我不知道要怎么做才能通过NuGet软件包中的迁移所需的更改来更新数据库。任何人都可以在这件事上说明一下吗?我对Migrations还是很陌生,如果有更改而不是在控制台中运行命令,也许有一些配置可以更新数据库,我有点迷失了。
提前致谢 :)
让我们对我遇到的这种情况有一些不同的看法。
我正在使用数据库(sql server express,最大 10gb db 大小)创建一个 (asp.net) web 应用程序。
此应用程序管理实体,但实体与国家相关,一个国家 - 多个实体。
在此之前,我无法预测数据库将如何增长。这是我在空闲时间做的一个个人/爱好项目。
我担心的是我是否应该为每个国家/地区创建特定的数据库副本。我认为的原因是:
然后,如果我只有一个适用于所有国家/地区的数据库,则有一些优势:
上帝!写下每个替代方案的优点似乎使多个数据库成为赢家!看来单数据库是给懒人用的……
无论如何,我想阅读更多的观点,所以请各位大侠,随意贡献你的想法。谢谢!