我目前在一个项目上工作,它将使用实体框架6.1.1和Oracle 11g数据库后端。我将跨多个模式访问表,其中一些模式还具有跨模式的外键关系(查找表、企业数据等)。
传统上,我们使用同义词作为向特定登录公开这些跨模式表的一种方法。我的问题是。如何使用代码优先映射在EF6中映射这些同义词?我可以在单个模式中直接映射到表,但这当然是不够的,因为我的表跨越了几个模式。到目前为止,我的代码优先映射不能识别同义词。
有没有人能够将代码优先映射到Oracle同义词?
发布于 2015-01-28 01:03:49
您可以尝试为特定实体设置模式:
modelBuilder.Entity<DATA>().ToTable("DATA", "schema");
或者装饰类:
[Table("DATA", Schema="SCHEMA"] public class DATA{..}
发布于 2016-06-10 00:47:26
您可以使用EF Fluent API来定义模式:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("MY_SCHEMA_NAME");
}如果要使用Oracle同义词,可以删除架构:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(string.Empty);
}这将生成包含FROM "MY_TABLE"而不是FROM "dbo"."MY_TABLE"或FROM "MY_SCHEMA_NAME"."MY_TABLE"的SQL。
我使用的是:
https://stackoverflow.com/questions/27553515
复制相似问题