时间:2021-07-01 10:21:17 帮助过:5人阅读
CodeFirst默认约定
约定就是一系列的默认规则,通过这些规则,在使用EF Code-First的时候,可以自动的基于你的领域类配置概念模型。默认约定的命名空间:System.Data.Entity.ModelConfiguration.Conventions;
①schema(模式) 默认情况下,EF会为所有的数据库对象,创建dbo模式名称。
注:dbo--database owner 数据库所有者,当你在数据库新建对象时,默认所有者为当前登录账号,当用其他账号登录时,必须指定 所有者.对象 才能调用,为了避免麻烦可以将对象的所有者指定为dbo,这样不管谁调用,使用dbo.对象就可以了。
②Table Name(表名) EF默认为实体类创建的表名为实体类+s,如Person类的表名:Persons
③Primary Key Name(主键名) EF默认将Id属性或实体名+Id(不区分大小写)设置为主键。
④Foreign Key Name(外键名)
Person类主键为Id,有一个Student类型的属性S,Student主键为StuId
EF会首先查找Person类中有无StuId属性,有的话设为外键,没有的话,会在数据库中创建外键:Student_StuId
⑤NULL column(可空列) EF会为所有引用类型的属性(不包含主键)创建可空数据列。
⑥Not NULL column(不可空列) EF为主键属性和不为空的值类型创建非空列。
⑦DB Column Order(数据列顺序) EF会根据属性在实体中的顺序,为列创建相应的顺序。需要注意的是:主键列会被移到第一个
注意的是:EF 6 不包含一对一和多对多的关系约定。你可以通过数据注解或者Fluent API来配置一对一关系或者多对多关系。
数据库初始化策略
CreateDatabaseIfNotExists:这是默认的数据库初始化策略。就像它的名称那样,如果根据配置,数据库不存在的话,就会创建数据库。但是如果你改变模型类,使用这个策略,再运行程序的话,就会抛出一个异常。
DropCreateDatabaseIfModelChanges:这个策略会在你的模型发生改变的时候,删除已经存在的数据库,然后创建一个新的数据库。所以当你模型改变的时候,不必担心怎么来维护数据库对象模式。
DropCreateDatabaseAlways:就像其名称所示,这个策略每次你运行程序的时候,都会删除以及存在的数据库,而不管你的模型类 是否发生改变。这个策略非常有用,当你每次运行程序,都想要一个新的数据库的时候。例如:当你在开发程序的时候。使用这个策略比较好。
Custom DB Initializer: 如果上面的策略不满足你的需求或者数据库初始化的时候,你想额外做一些其他的处理的时候, 你就可以创建你自己的数据库初始化策略。
你如果想使用自定义的数据库初始化策略,就可以继承上面三个中的其中一个策略,例如:
EF CodeFirst简介、默认约定、数据库初始化策略
标签:mod name font inf config col 它的 student 概念