• 【Entity Framework】 Entity Framework资料汇总


    Fluent API :

    http://social.msdn.microsoft.com/Search/zh-CN?query=Fluent%20API&Refinement=95&ac=4

    http://msdn.microsoft.com/zh-cn/data/hh134698.aspx
    http://msdn.microsoft.com/zh-cn/data/jj591617.aspx
    http://msdn.microsoft.com/zh-cn/data/jj591620.aspx 

    CodeFirst:

    http://www.codeproject.com/Articles/504720/EntityplusFrameworkplusCodeplusFirstplusMigrations

    Understanding Database Initializers in Entity Framework Code First:

    http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm

    http://www.codeguru.com/csharp/article.php/c19233/Introduction-to-Entity-Framework-Code-First.htm

     
     
    EF的codeFirst有两种方式:

    第一种:.EF自动创建数据库。
    第二种:EF使用已经存在的数据库,EF的codeFirst使用已经存在的数据库,需要在配置文件中添加:
    <configuration>
      <connectionStrings>
        <add
          name="MyDB"
          providerName="System.Data.SqlClient"
          connectionString="Server=.SQLEXPRESS;Database=TestDb;Trusted_Connection=true;"/>
      </connectionStrings>
    </configuration>

     public partial class BlogContext : DbContext
    {
      public BlogContext():base("MyDB")
      {
      }
     
      。。。。
     

     codeFirst的实现机制是先去配置文件中找,是否连接字符串,有则用已经存在的数据库,无则自动创建数据库

    【1】如果BlogContext():base(“”)构造函数没有传参,先去配置文件中找是否连接字符串与"命名空间.BlogContext"同名的连接字符串。如果有,用这个数据库连接,若无,创建新的名为--”命名空间.BlogContext“的数据库

    【2】如果BlogContext():base(“MyDB”)构造函数传参“MyDB”,先去配置文件中找是否连接字符串与"MyDB"同名的连接字符串。如果有,用这个数据库连接,若无,创建新的名为--”MyDB“的数据库

    若需要在修改一些配置:

    (什么时候要添加额外的配置?

     答:比如:

          1.CodeFirst自动生成的表名、表字段名不满足你的命名习惯

          2.用已经存在的数据库表名称,表的列名等和实体类的字段名不一样,EF就无法建立表和实体类字段的映射关系,这时需要添加配置

          添加配置的方法有两种:

          第一种是使用特性:例如:[key]。但是使用特性这种方法有时无法满足所有的需求,

           这时就要用第二种方法FluentAPI,

           还有就是想我这种有代码点洁癖的,不喜欢在POCO类添加这些特性,若以后换了ORM框架,

           EF的这些特性,跟其他ORM特性就没关系了,不删代码(实体类上的EF特性),要编译通过就得引用EF程序集。而EF程序集又不是现在需要的。所以

          尽量保持POCO类的洁净是件好事

          第二种是使用FluentAPI

    重写BlogContext()的方法:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)

    例如:

            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder
                    .Configurations
                    .Add(new UserTypeConfiguration())
                    .Add(new ProductTypeConfiguration())
                    .Add(new CategoryTypeConfiguration())
                    .Add(new CategorizationTypeConfiguration())
                    .Add(new SalesLineTypeConfiguration())
                    .Add(new SalesOrderTypeConfiguration())
                    .Add(new ShoppingCartItemTypeConfiguration())
                    .Add(new ShoppingCartTypeConfiguration())
                    .Add(new RoleTypeConfiguration())
                    .Add(new UserRoleTypeConfiguration());
                base.OnModelCreating(modelBuilder);
            }
    View Code
        public class UserTypeConfiguration : EntityTypeConfiguration<User>
        {
            #region Ctor
            /// <summary>
            /// Initializes a new instance of <c>CustomerTypeConfiguration</c> class.
            /// </summary>
            public UserTypeConfiguration()
            {
                HasKey(c => c.ID);
                Property(c => c.ID)
                    .IsRequired()
                    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
                Property(c => c.UserName)
                    .IsRequired()
                    .HasMaxLength(20);
                Property(c => c.Password)
                    .IsRequired()
                    .HasMaxLength(20);
                Property(c => c.Email)
                    .IsRequired()
                    .HasMaxLength(80);
    
                ToTable("Users");
            }
            #endregion
        }
    View Code

    使用Fluent API进行了额外的配置。

    【工欲善其事必先利其器】—Entity Framework实例详解

    http://www.cnblogs.com/nianming/archive/2012/11/04/2753183.html

    DDD & EntiyFramework

    Shrink EF Models with DDD Bounded Contexts:
    http://www.nmtree.net/2014/05/09/shrink-ef-models-with-ddd-bounded-contexts.html

  • 相关阅读:
    第二十八节:EFCore6.x版本新功能总结
    C#开发常用技巧
    awk去掉最后几个字母
    AB中主从表,子表删除时出现缺少Where错误的解决方法
    ABQuery的查询语句关联了其它表,增加记录时,提示关联表无法更新的解决方法
    cxGrid动态设置单元格对齐方式
    4.0后续增加功能和修正Bug
    Windows的Proifier报错Cannot configure Windows network.Try to run SysSettings tool manually
    GO orm 框架GORM学习
    js根据某属性对json数组分类
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3780686.html
Copyright © 2020-2023  润新知