• EFCodeFirst 数据库连接


    EFCodeFirst 数据库连接

    EFCodeFirst
    数据库连接

    1.NuGet安装实体命令

    1. PM> Install-Package EntityFramework 

    2.数据库连接字符串

    自动添加得app.Config大体如下:

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <configuration> 
    3. <configSections> 
    4. <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    5. </configSections> 
    6. <entityFramework> 
    7. <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
    8. <parameters> 
    9. <parameter value="Data Source=(local); Database=Portal; User ID=sa; Password=; MultipleActiveResultSets=True" /> 
    10. </parameters> 
    11. </defaultConnectionFactory> 
    12. </entityFramework> 
    13. </configuration> 

    设置DefaultConnectionFactory之后,使用Entity Framework连接数据库不需再在其他地方进行设置,Entity Framework也不需要指定数据库连接。

    通过配置connectionStrings

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <configuration> 
    3. <connectionStrings> 
    4. <add name="PortalContext" connectionString="Data Source=(local); Database=Portal; User ID=sa; Password=; MultipleActiveResultSets=True" 
    5. providerName="System.Data.SqlClient" /> 
    6. </connectionStrings> 
    7. </configuration> 

    3.DbContext连接数据库

    1. using System; 
    2. using System.Collections.Generic; 
    3. using System.Linq; 
    4. using System.Text; 
    5.  
    6. using System.Data.Entity; 
    7.  
    8. namespace Portal 

    9. public class PortalContext : DbContext 

    10. static PortalContext() 

    11. Database.SetInitializer<PortalContext>(null); 
    12. //Database.SetInitializer(new CreateDatabaseIfNotExists<PortalContext>()); 
    13. //Database.SetInitializer(new DropCreateDatabaseAlways<PortalContext>()); 
    14. //Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>()); 

    15.  
    16. public PortalContext() 
    17. : base("name=PortalContext") 


    18.  
    19. protected override void OnModelCreating(DbModelBuilder modelBuilder) 




    静态构造函数中设置数据库的初始化方式,在构造函数中指定App.config的connectionString。

    3种初始化方式

    • CreateDatabaseIfNotExists。默认,数据库不存在创建数据库。
    • DropCreateDatabaseWhenModelChanges。数据模型发生改变的时候,先删除,后创建。
    • DropCreateDatabaseAlways。总是先删除后创建,无论模型是否变化。
    • Database.SetInitializer<PortalContext>(null); 关闭初始化功能。

    4.基本常用设置

    • 禁用延迟加载(Lazy Loading)
    • 禁用关系数据的级联删除
    • 禁用默认表名复数形式
    1. // 禁用延迟加载 DbContext类中设置 
    2. this.Configuration.LazyLoadingEnabled = false
    3. // 禁用一对多级联删除 OnModelCreating方法中设置 
    4. modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 
    5. // 禁用多对多级联删除 OnModelCreating方法中设置 
    6. modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); 
    7. // 禁用默认表名复数形式 OnModelCreating方法中设置 
    8. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
  • 相关阅读:
    探索事务日志与恢复模式(1-13)
    sql server 复制、镜像常见故障处理
    (3.2)mysqldump之备份单个表及脚本批量备份
    Log Explorer 恢复误删除、更新数据
    ApexSQL Log 从意外UPDATE和DELETE操作中恢复SQL Server数据
    ApexSQL Recover 恢复一个被drop的表的数据
    数据库参数调优--自动更新统计信息
    T-SQL利用笛卡尔积/窗口函数_分析函数/表连接累计、累加
    【生产问题】-dbcc checkdb报错-数据页故障
    (4.4)dbcc checkdb 数据页修复
  • 原文地址:https://www.cnblogs.com/mmry/p/7060255.html
Copyright © 2020-2023  润新知