gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:53:24 25 4
gpt4 key购买 nike

我正在尝试使用 ODP.net 在 Oracle 下使用 EF CodeFirst。这是我的 DbContext 类:

    public class MyCEContext : DbContext {

public DbSet<Person> Persons { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Person>().ToTable("PERSONS","myce");

}

public MyCEContext() :
base(new OracleConnection(
"Data Source=cebd; User ID=myce; Password=****;"), true) {}

}

问题是,当我尝试做这样的事情时:
MyCEContext context = new MyCEContext();
Person p = context.Persons.Find(1);

我得到这个内部错误:
{"ORA-00942: table or view does not exist"}

并且该表存在。

我究竟做错了什么?

最佳答案

正如尼克在他的回答中所写的那样,问题与生成的查询的引号和大小写有关,但与表的名称无关,而与模式的名称有关:

SELECT * 
FROM "myce"."PERSONS" "Extent1"

所以解决方法很简单,只需将用户id和schema名称大写即可:
modelBuilder.Entity<Person>().ToTable("PERSONS","MYCE");

通常,所有内容都必须大写:表、架构和字段的名称。但最好使用 Column 属性而不是大写属性名称来注释每个映射的属性:
    [Column("FIRST_NAME")]
public string FirstName { get; set; }

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

关于asp.net-mvc-3 - 如何配置 DbContext 以使用 Oracle ODP.Net 和 EF Code First?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com