我有一个如下所示的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直接调用,这是相同的错误。
我是否会错过针对视图的某种配置,以确保实体框架不会尝试创建视图,而是使用已经创建的视图?
答案 0 :(得分:1)
尝试关闭数据库初始化程序:
Database.SetInitializer<MyContext>(null);