asp.net-mvc-3 – 如何配置DbContext以使用Oracle ODP.Net和EF CodeFirst?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 如何配置DbContext以使用Oracle ODP.Net和EF CodeFirst?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用ODP.net在Oracle下使用EF CodeFirst.这是我的DbContext类:
  1. public class MyCEContext : DbContext {
  2.  
  3. public DbSet<Person> Persons { get; set; }
  4.  
  5. protected override void OnModelCreating(DbModelBuilder modelBuilder) {
  6. modelBuilder.Entity<Person>().ToTable("PERSONS","myce");
  7.  
  8. }
  9.  
  10. public MyCEContext() :
  11. base(new OracleConnection(
  12. "Data Source=cebd; User ID=myce; Password=****;"),true) {}
  13.  
  14. }

问题是,当我尝试做这样的事情时:

  1. MyCEContext context = new MyCEContext();
  2. Person p = context.Persons.Find(1);

我得到这个内心的错误

  1. {"ORA-00942: table or view does not exist"}

表格存在.

我究竟做错了什么?

解决方法

正如Nick在他的回答中所写的那样,问题与生成查询的引用和大小写有关,但与表的名称有关,但与模式的名称有关:
  1. SELECT *
  2. FROM "myce"."PERSONS" "Extent1"

所以解决方案非常简单,只是大写用户ID和模式名称

  1. modelBuilder.Entity<Person>().ToTable("PERSONS","MYCE");

通常,所有都必须是大写的:表,模式和字段的名称.但最好使用Column属性注释每个映射属性,而不是使用大写属性名称

  1. [Column("FIRST_NAME")]
  2. public string FirstName { get; set; }

因此,名称将更容易在数据库和类中读取.

猜你在找的asp.Net相关文章