在网站中的实体模型的命名空间

8 浏览
0 Comments

在网站中的实体模型的命名空间

在Visual Studio 2012专业版或Visual Studio 2015社区版中,是否有一种方法可以为实体数据模型分配一个命名空间,以便在同一项目中集成多个不同数据库的模型?\n我知道如果我创建一个“项目”,这是可能的,但如果我想创建一个网站呢?\n请注意,“网站”!=“Web项目”。\nedmx文件放在App_Code文件夹中,在VS2012中,命名空间属性似乎被忽略了,因为如果我添加第二个edmx,映射到另一个数据库,它会与第一个具有相同名称的表发生冲突。\n在VS2015中,如果创建一个网站,甚至没有设置命名空间属性的方法。\n请注意,我指的是“网站”而不是“Web项目”。它们是不同的。

0
0 Comments

在Web站点中实体模型的命名空间问题的出现原因是需要在一个Web站点中使用多个数据库,并且每个数据库都有自己的ADO.NET Entity Data Model。为了解决这个问题,可以在App_Code文件夹中创建多个子文件夹,每个子文件夹都对应一个数据库,并在各自的子文件夹中创建相应的ADO.NET Entity Data Model。在创建模型时,可以为每个模型指定不同的命名空间,并将其放置在相应的子文件夹中。如果在构建Web站点时出现错误,可以尝试关闭Visual Studio并重新加载Web站点。需要多个数据模型的原因可能是为了构建一个汇总报告的Web站点,该站点需要从不同数据库中读取数据,或者是进行数据迁移项目等。选择使用Web站点而不是新项目的原因可能是因为Web站点在开发和调试过程中更快,不需要在每次修改代码时重新编译,并且部署更简单,只需要上传更改的文件。此外,使用Web站点还可以在没有Visual Studio的情况下进行快速和简单的更改。然而,使用Web站点也会带来更大的灵活性,但也可能导致一些混乱。有关更多信息,请参阅上面的链接。

0
0 Comments

在一个网站中,使用相同的数据模型(POCO类)类名可能会导致类型加载错误,因为EF在加载模型类型时似乎忽略了命名空间。解决这个问题的最安全的方法是确保实体类名在整个应用程序域中是唯一的。

解决方法之一是在从表生成模型类后尝试更改模型类名,以避免名称冲突。可以参考这里(https://stackoverflow.com/questions/3352212)或者更详细地参考这里(http://www.asp.net/mvc/overview/older-versions-1/models-data/creating-model-classes-with-the-entity-framework-vb)来了解如何更改实体类名。

如果需要更新模型,从数据库到代码,逐个更改实体类名的方法太繁琐了,而且如果再次更新模型,需要重新进行更改。修改T4模板可能是一个选项,但我更倾向于不去修改它,因为我觉得对自己来说不太安全。顺便说一下,我已经找到了一个解决方案,并且命名空间被EF正确地生成和使用,详见我的自动回复。

0