Entity Framework CodeFirst For Oracle


說明:1)簡單示例  2)非純粹的CodeFirst,更多的是DbFirst+CodeFirst方式相結合。3)只需用Oracle最新版的ODAC,不需要第三方驅動。Web應用需要web.config配置。4) 重點:此寫法可支持多數據庫(理論支持EF驅動的都可以),且Model名稱和數據庫字段名稱不一致的情況。特別適用於舊系統的移動延伸開發。 

1、聲明 model。並手動創建表結構,字段建議大寫。

   public class PageUser

   {

    public virtual string PId { get; set; }

   public virtual string UId { get; set; }

  }

2、Model和表 Mapping  

   public class PageUserMapping : EntityTypeConfiguration<PageUser>

    {
        protected string DbSchema { get; set; }
        public PageUserMapping()
            : this(null)
        {
        }
        public PageUserMapping(string dbSchema)
        {
            this.DbSchema = dbSchema;
            Property(c => c.UId).HasColumnName("UID");
            Property(c => c.PId).HasColumnName("PID");

    //設置主鍵 

            HasKey(c => new { c.UId,c.PId });
 
            if (string.IsNullOrEmpty(DbSchema))
            {
                ToTable("PAGEUSERS"); //表名
            }
            else
                ToTable("PAGEUSERS", DbSchema); //Oracle等需要指定Schema,即登陸oracle的用戶
        }
    }

 

 3、繼承 DbContext 的類中,重寫

public class MContext : DbContext

  protected override void OnModelCreating(DbModelBuilder modelBuilder)

  {
          base.OnModelCreating(modelBuilder);
          modelBuilder.Conventions.Remove<ModelNamespaceConvention>();
          modelBuilder.Conventions.Remove<ModelContainerConvention>();
   //此處重要
           modelBuilder.Configurations.Add(new PageUserMapping("TEST"));
        }
    }
}

 

到目前為止此為幾個關鍵點,可以 using(var contxt=new MContext()) { ....}  使用了。

另:Web開發,Web.config 配置,當然要引用 Oracle.DataAccess 了。

    <system.data>

<DbProviderFactories>
<remove invariant ="Oracle.DataAccess.Client" />
<add name="Oracle Data Provider for .NET"
invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET"
type="Oracle.DataAccess.Client.OracleClientFactory,
                  Oracle.DataAccess,
                  Version=4.112.3.0,
                  Culture=neutral,
                  PublicKeyToken=89b483f429c47342,processorArchitecture=x86" />
</DbProviderFactories>
</system.data>

 

參考: http://dotnetspeak.com/index.php/2012/01/oracle-odp-and-entity-framework-code-first-4-2/ 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM