ora-00955:名称在选择视图时已被现有对象使用

时间:2018-07-17 20:27:49

标签: c# oracle entity-framework wcf view

我有一个如下所示的oracle视图(那是我的客户视图,他不希望我访问该表)

public class V_UT_ALIAS
{
    public int PRIMARYKEY { get; set; }

    public string Value { get; set; }
}

对于我的测试,我创建了一个表,该表具有与视图相同的信息。 我有上下文

public class MyContext : DbContext
{
    public MyContext(string nameOrConnectionString)
        : base(new OracleConnection(nameOrConnectionString), true)
    {
    }
    public MyContext()
        : base("name=ConnectionString")
    {
    }


    public virtual IDbSet<V_UT_ALIAS> Alias { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        modelBuilder.Configurations.Add(new FooViewConfiguration());

        base.OnModelCreating(modelBuilder);
    }
}

public class FooViewConfiguration : EntityTypeConfiguration<V_UT_ALIAS>
{
    public FooViewConfiguration()
    {
        this.ToTable("V_UT_ALIAS","THECLIENTUSER");
        this.HasKey(t => t.PRIMARYKEY);
    }
}

当我使用linq查询

var test = (from patate in Context.Alias select patate.PRIMARYKEY).ToList();

标题中有一个例外,但是如果我将FooViewConfiguration表更改为我的模型表,则一切正常。

我还尝试使用Context.Database.SqlQuery直接调用,这是相同的错误。

我是否会错过针对视图的某种配置,以确保实体框架不会尝试创建视图,而是使用已经创建的视图?

1 个答案:

答案 0 :(得分:1)

尝试关闭数据库初始化程序:

Database.SetInitializer<MyContext>(null);