Entity Framework 一些开发总结

实体类指定某张表,要加上[Table("corder")]

1>、Data Annotation方式
在使用Data Annotation方式进行Entity Framework Code First与数据库映射之前,需要先添加命名空间引用

using System.ComponentModel.DataAnnotations;

 
using System.ComponentModel.DataAnnotations.Schema;

[Table("corder")]
    public class Corder
    {

[Key]
        public string ccode { get; set; }

}

2>、Fluent API方式

  Fluent API实现配置Entity Framework Code First与数据库映射关系主要是通过继承DbContext并重写其中的OnModelCreating方法来进行的。在本文中新建类文件PortalContext.cs继承DbContext。

  在继承DbContext之前,添加命名空间引用。

1
using  System.Data.Entity;

  重写OnModelCreating方法,配置类对应于数据库中的表名:

1
2
3
4
protected  override  void  OnModelCreating(DbModelBuilder modelBuilder)
{
     modelBuilder.Entity< corder>().ToTable( " corder" );
}

  重写OnModelCreating方法,配置类对应于数据库中的表名,并指定表的所有者:

 //protected override void OnModelCreating(DbModelBuilder modelBuilder)
        //{
        //    base.OnModelCreating(modelBuilder);
        //    modelBuilder.Entity<Corder>().ToTable("corder");
        //}

完整的代码如下

 public class CorderEntities : DbContext
    {
       // //实体类连接的数据库
        public CorderEntities() : base("Data Source=.;Database=zcscdb20083;User=sa;Password=1") { }
        static CorderEntities()
        {
            Database.SetInitializer<CorderEntities>(null);
          // Database.SetInitializer(new DropCreateDatabaseIfModelChanges<CorderEntities>());
        }

      //  public CorderEntities() : base("name=TestContext") { }
        public DbSet<Corder> corder { get;set;}
        //实体类指定某张表
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
           base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<Corder>().ToTable("corder");
        }
    }

在使用Fluent API进行Entity Framework Code First数据库映射时,除了以上的在重写OnModelCreating方法中直接对Entity进行配置之外,也可以对Configurations进行配置。这时可以先写一个单独的类,将数据表的全部映射要求都写在构造函数中。
 public class EF_CorderMap:EntityTypeConfiguration<Corder>
    {
       public EF_CorderMap()
       {
           this.Property(t => t.strCustid).HasColumnName("ccustid")
               .HasMaxLength(20);
           this.Property(t => t.dtDate).HasColumnName("ddate");
           this.Property(t => t.strSaleman).HasColumnName("csaleman")
              .HasMaxLength(20);
           this.Property(t => t.decAmt).HasColumnName("damt")
              .HasColumnType("decimal")
            .HasPrecision(18, 2);
       }
    }
 //  实体类指定某张表
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Configurations.Add(new EF_CorderMap());
        }
实体类

 [Key]
        [Column("ccode"),MaxLength(20)]//对应数据库列名,长度
        public string strCode { get; set; }
        public string strCustid { get; set; }
        public DateTime dtDate { get; set; }
        public string strSaleman { get; set; }
        public decimal decAmt { get; set; }

三、数据库初始化

1.关闭初始化

TestContext是dbcontext对象

   1: Database.SetInitializer<TestContext>(null);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值