Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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
C# 数据库首先不保留自定义架构?_C#_Sql Server_Entity Framework - Fatal编程技术网

C# 数据库首先不保留自定义架构?

C# 数据库首先不保留自定义架构?,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我有一个SQL Server数据库,它有一个相当复杂的模式,我正在构建该模式以与我的网站交互。由于数据的性质,有几种自定义模式。当我在Visual Studio 2013中使用内置的ADO.NET实体模型工具时,没有保留任何自定义模式,并且更改了几个表的名称 如何在创建模型时保留数据库结构 例如,我有两个表,都称为Employees。一个是employee,另一个是companys,这些表中已经有一些数据,在我设置模型时需要保留这些数据。我的错误原因是多种因素造成的。显然,EF6中有一个真正的b

我有一个SQL Server数据库,它有一个相当复杂的模式,我正在构建该模式以与我的网站交互。由于数据的性质,有几种自定义模式。当我在Visual Studio 2013中使用内置的ADO.NET实体模型工具时,没有保留任何自定义模式,并且更改了几个表的名称

如何在创建模型时保留数据库结构


例如,我有两个表,都称为
Employees
。一个是
employee
,另一个是
companys
,这些表中已经有一些数据,在我设置模型时需要保留这些数据。

我的错误原因是多种因素造成的。显然,EF6中有一个真正的bug,它会导致在首次使用数据库时在保留模式时出现一些错误。您也会遇到同名表的问题。然而,这个方法产生了一个奇怪的修正,如果你告诉设计者自动将名称复数,你就不会有这个奇怪的名称冲突


使用EF 6.1.0和Microsoft提供的新EF工具,您可以首先对现有数据库使用代码。此方法还有一个奇怪的错误,即如果不在设计器中选择
对象名称复数化
,则会发生命名冲突。但是这个方法确实保留了数据库的模式

看起来EF codeplex网站上已经跟踪到了一个功能请求:@Pawel经过深入研究,我研究了几种不同的解决方案,但最终找到了一些有效的方法,这只是时间密集型的。据说有几个网站覆盖了
#OnModelCreating
方法,在尝试这种方法后,它没有解决这个问题。然后我尝试了另一种方法。在每个表的每个类的开头,我放置了一个
[table(“employees”,Schema=“companys”)]
,这将为迁移生成正确的输出。因为您使用的是设计器,我以为您是在执行edmx,而不是先编写代码。我认为你应该把它作为一个bug归档——当你首先对代码进行反向工程时,应该为你生成属性(或相应的fluent配置)。我正在做edmx,但必须使用代码进行修改,以便创建数据库properly@Pawel但是,如果我使用两个不同的模式,但名称相同,那么它看起来确实是一个bug。它会导致内置迁移工具出错,认为表是相同的。在进一步搜索之后,这是一个常见问题,唯一的解决方法似乎是重命名表。