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
Asp.net mvc Entityframework 4如何在没有任何dbmodelbuilder的情况下以代码优先的方式自动映射数据库模式_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc Entityframework 4如何在没有任何dbmodelbuilder的情况下以代码优先的方式自动映射数据库模式

Asp.net mvc Entityframework 4如何在没有任何dbmodelbuilder的情况下以代码优先的方式自动映射数据库模式,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我不熟悉实体框架和mvc,我尝试创建一个mvc 4应用程序,并使用实体框架执行CRUD操作,我创建了一个模型“User”,并使用属性id、firstname、lastname运行该应用程序,实体框架自动在我的数据库中给了我一个表,我想知道后台映射是如何发生的,我看到databaseSetInitializer方法在默认情况下也会被注释,那么,如果我以后添加或删除记录,如何创建数据库和映射呢?另一方面,我看到在一些应用程序中,他们通过覆盖OnModelCreating事件并为每个表和相应列添加配置

我不熟悉实体框架和mvc,我尝试创建一个mvc 4应用程序,并使用实体框架执行CRUD操作,我创建了一个模型“User”,并使用属性id、firstname、lastname运行该应用程序,实体框架自动在我的数据库中给了我一个表,我想知道后台映射是如何发生的,我看到databaseSetInitializer方法在默认情况下也会被注释,那么,如果我以后添加或删除记录,如何创建数据库和映射呢?另一方面,我看到在一些应用程序中,他们通过覆盖OnModelCreating事件并为每个表和相应列添加配置映射来使用映射,因此,有人请澄清为什么会真正使用这些映射,以及在没有这些映射代码的情况下,它们是如何神奇地为我工作的?下面是代码

protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                var schemaName = ConfigurationManager.AppSettings["EFSchemaName"];
                if (!string.IsNullOrEmpty(schemaName))
                {
                    modelBuilder.Configurations.Add(new UserMap(schemaName));
                    modelBuilder.Configurations.Add(new BookMap(schemaName));
                    modelBuilder.Configurations.Add(new CollegeMap(schemaName));
                    modelBuilder.Configurations.Add(new AreaMap(schemaName));
                    modelBuilder.Configurations.Add(new StateMap(schemaName));
                    modelBuilder.Configurations.Add(new LanguageMap(senter code herechemaName));
                }
                else
                {
                    throw new ConfigurationErrorsException("'EFSchema' setting not found.");
                }
            }

如果您不提供自己的配置,CodeFirst将使用许多内置约定。例如,名为User的实体将映射到dbo.Users。如果该类具有Id属性或UserId属性,它将把它作为主键。查看MSDN文档以查看约定的完整列表。除了@Dismissile:EF(代码优先)之外,它还使用属性和参数的反射来确定数据库架构。如果删除或添加属性,EF将检测到它,但不会再次更改架构。在这种情况下,您应该使用迁移包。@Dismissile和marthijn:谢谢您的评论,我猜您说的是默认情况下它对我有用,没有任何额外的代码,但我的疑问是在一个mvc应用程序中,我看到上面的代码我附加了使用modelbuilder进行显式映射,如果默认情况下EF映射模式,那么需要什么?额外的钱在干什么?