我有这样的实体:映射波苏斯在EF“schema.tablename”格式4.1代码首先,使用dotconnect甲骨文
public class MyEntity
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
我想这个实体映射到甲骨文Oracle 11g数据库作为MySchema.MyEntity
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>().ToTable("MyEntity", "MySchema");
base.OnModelCreating(modelBuilder);
}
的问题是,当我尝试添加一个实体,做的SaveChanges,它完全忽略了ToTable()的模式部件,即使我添加了一个表(“MySchema.MyEntity”)]属性的类也会被忽略。无论我做什么,架构将永远是连接字符串的登录名。
DbConnection con = new Devart.Data.Oracle.OracleConnection(
"User Id=system;Password=admin;Server=XE;Persist Security Info=true;");
架构名称总是我设置为UserId。它只有当我写下明确的改变:
con.ChangeDatabase("MySchema"); //this will only work if the database connection is open...
但现在我想将它记下来......
如何使这项工作?
编辑:
噢,伙计......解决方法:
第一:UPPERCASESCHEMANAMES!
二:在官方dotconnect例子有一行:
config.Workarounds.IgnoreSchemaName = true;
删除它...(这个,如果你设置你所有的实体架构名称只会工作,否则“DBO”模式将被使用,在oracle中不存在...)
表( “myEntity所” 模式= “MYSCHEMA”) 也将被忽略 –
问题得到解决.. –