小编Alf*_*ñoz的帖子

C# 和继承。当对象是扩展类对象时,基类属性为空

我有以下课程:

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)

c# inheritance

5
推荐指数
0
解决办法
6096
查看次数

无法从主应用程序执行自定义NuGet程序包的代码优先迁移

我创建了一个包含在主MVC3 Web应用程序中的模块。该模块打包成NuGet软件包,可以通过NuGet进行安装和卸载。主站点和模块都使用Code First,EF> = 4.3

要创建程序包,我有另一个MVC3站点,并且所有功能都在一个区域内,因此,要创建程序包,我只需要打包库,视图和所有需要的文件。数据库迁移在项目中工作正常,并且程序包创建良好。

现在,我通过NuGet将软件包安装在主站点中。该站点位于另一个解决方案中,该解决方案有两个项目:

  • MyProject.Web.UI:这是一个Mvc3项目
  • MyProject.EntityFramework:这是一个包含所有模型的类库,dbContext for MyProject ...

软件包已正确安装,并且Area,Area视图和库已正确安装。

现在的问题是我如何更新数据库?我首先尝试运行“ Update-Database”,但收到消息:

“在程序集'MyProject.Web.UI'中未找到迁移配置类型。(在Visual Studio中,您可以使用程序包管理器控制台中的Enable-Migrations命令来添加迁移配置)。”

然后,我尝试通过“ Enable-Migrations”启用迁移,但又收到了另一条消息:

“在程序集'MyProject.Web.UI'中找不到上下文类型。”

我也尝试仅运行该站点,看看是否自动应用了更改,但出现了带有典型消息的异常页面:

“自创建数据库以来,支持'NugetPackageDbContext'上下文的模型已更改。请考虑使用代码优先迁移来更新数据库”

我不知道要怎么做才能通过NuGet软件包中的迁移所需的更改来更新数据库。任何人都可以在这件事上说明一下吗?我对Migrations还是很陌生,如果有更改而不是在控制台中运行命令,也许有一些配置可以更新数据库,我有点迷失了。

提前致谢 :)

entity-framework code-first ef-migrations

5
推荐指数
1
解决办法
6592
查看次数

一个或多个用于多国 Web 应用程序

让我们对我遇到的这种情况有一些不同的看法。

我正在使用数据库(sql server express,最大 10gb db 大小)创建一个 (asp.net) web 应用程序。

此应用程序管理实体,但实体与国家相关,一个国家 - 多个实体。

在此之前,我无法预测数据库将如何增长。这是我在空闲时间做的一个个人/爱好项目。

我担心的是我是否应该为每个国家/地区创建特定的数据库副本。我认为的原因是:

  • 数据库的大小会更小,所以我不会有从 SQL Server Express 开始的大小问题。
  • 再次,数据库大小。由于每个国家/地区的规模较小,因此性能会更好。
  • 可以在每个国家/地区的低高峰时间执行维护任务(备份、部署)。
  • 如果每个国家/地区的数据保护法律不同,我可以根据具体法律调整每个数据库。
  • 每个国家/地区的自定义文本搜索。这真的不是问题,因为我认为我可以为每个不同的国家/地区创建一个视图并对该视图进行文本搜索。

然后,如果我只有一个适用于所有国家/地区的数据库,则有一些优势:

  • 维护将变得更加简单。只有一个数据库意味着只做一次。
  • 没有冗余代码。我在这个网络应用程序中使用了很多存储过程。一项更改只需要在生产中发布一次。

上帝!写下每个替代方案的优点似乎使多个数据库成为赢家!看来单数据库是给懒人用的……

无论如何,我想阅读更多的观点,所以请各位大侠,随意贡献你的想法。谢谢!

database-design

1
推荐指数
1
解决办法
1020
查看次数