- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
环境
使用 Entity Framework 在 MVC 应用程序 Controller 中执行 LINQ 语句时,出现 ORA-01031
错误。
正在使用非 Oracle 架构所有者的用户对 Oracle View 执行 LINQ 语句。所有授权均通过 Oracle 角色设置。
这是 Oracle 定义
--ROLE
DROP ROLE DART_PORTAL;
CREATE ROLE DART_PORTAL NOT IDENTIFIED;
-- Object privileges granted to DART_PORTAL
GRANT SELECT ON GISPROD.B$FIM_D_POLE_VISINSP_N TO DART_PORTAL; --table
GRANT SELECT ON GISPROD.FIM_D_POLE_VISINSP_N TO DART_PORTAL; --view
GRANT EXECUTE ON GISPROD.LTT_USER TO DART_PORTAL; --package is being utilized in VIEW
-- Grantees of DART_PORTAL
GRANT DART_PORTAL TO DART WITH ADMIN OPTION; --user
GRANT DART_PORTAL TO GISPROD WITH ADMIN OPTION; --schema owner
--USER
DROP USER DART CASCADE;
CREATE USER DART
IDENTIFIED BY <password>
DEFAULT TABLESPACE GISDEV
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 3 Roles for DART
GRANT DART_INTERFACE TO DART WITH ADMIN OPTION; --another role
GRANT DART_PORTAL TO DART WITH ADMIN OPTION; --role from the role script
GRANT RESOURCE TO DART;
ALTER USER DART DEFAULT ROLE ALL;
-- 5 System Privileges for DART
GRANT ALTER SESSION TO DART;
GRANT CREATE SESSION TO DART;
GRANT EXECUTE ANY PROCEDURE TO DART;
GRANT SELECT ANY SEQUENCE TO DART;
GRANT UNLIMITED TABLESPACE TO DART;
当我使用用户 DART 使用 Toad 软件登录时,我可以针对表和 View 执行 select 语句。
当我在 Visual Studio 中的服务器资源管理器上使用同一用户时 - 表和 View 节点为空。
我可以使用 LINQ 查询 Oracle 表,但不能使用 Oracle View。
使用 View 很重要,因为我们的 GIS 系统中的每个 B$
表都有事务记录,例如 ADD
、DELETE
、编辑
。
这是由供应商内置的事务表示。每个 View 都会消除这些事务记录。
你能告诉我我缺少哪些 Oracle 权限吗?
而且,我可以将 Oracle View 与 Entity Framework 一起使用吗?
如果没有,我想我必须构建自定义 LINQ 扩展方法,以在直接从 Oracle 表中选择记录时消除这些事务记录。
在web.config
中定义的连接字符串:
<add name="GisStageDbContext" connectionString="DATA SOURCE=SERVERNAME:PORT/SERVICENAME;USER ID=DART;PASSWORD=PASSWORD" providerName="Oracle.ManagedDataAccess.Client" />
我创建了简单的 Controller 操作并将用户返回到 MVC View
此代码有效:
public ActionResult Test()
{
var test = _testContext.Database.SqlQuery<string>("select user from dual").First();
ViewBag.User = test;
return View();
}
在查询 Oracle View 而不是 Oracle 表时,我仍然遇到相同的错误
此代码按表名称的预期工作
[Table(name:"B$FIM_D_POLE_VISINSP_N")]
public partial class FimPole
{
[Key]
[Column(name: "G3E_ID", Order = 0)]
[Display(Name = "G3E ID")]
public long Id { get; set; }
[Column(name: "FIM_STATE")]
[Display(Name = "Fim State")]
[StringLength(maximumLength: 15)]
public string FimState { get; set; }
[Column(name: "INSPECTION_STATUS")]
[Display(Name = "inspection Status")]
[StringLength(maximumLength: 15)]
public string InspectionStatus { get; set; }
}
此代码不起作用并给我错误
[Table(name:"FIM_D_POLE_VISINSP_N")]
public partial class FimPole
{
//Same fields
}
数据库上下文类是
public class VisualInspectionDbContext : DbContext
{
public VisualInspectionDbContext()
: base("name=GisStageDbContext"){}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("GISPROD");
}
public DbSet<AssetPole> AssetPoles { get; set; }
public DbSet<FimPole> FimPoles { get; set; }
}
我必须与我们的 Oracle DBA 交谈并询问他的意见。
谢谢。
最佳答案
这个问题已经解决了。因为我正在使用现有的 Oracle 数据库,所以我必须禁用数据库初始值设定项。
public VisualInspectionDbContext()
: base("name=GisStageDbContext")
{
Database.SetInitializer<VisualInspectionDbContext>(null);
}
基本上,DART 用户是低权限用户,没有任何创建数据库表的权限。每次 DBContext 对象初始化时 - Entity Framework 尝试在没有权限的用户下创建 Oracle 表。无论如何,如果您使用现有数据库 - 禁用初始化程序,否则;每个表将根据 C# 类定义重新创建。 我希望这篇文章能够帮助其他人。
问候,
谢尔盖
关于oracle - ORA-01031 : insufficient privileges with Oracle view using Entity Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925605/
我正在尝试从我的谷歌驱动器下载电子表格。我正在关注 this reference并且在许可方面遇到问题。我从 https://www.googleapis.com/auth/drive.file 开始
我正在尝试使用以下命令将一个目录从我的虚拟机复制到我本地机器的桌面: gcloud compute scp --recurse instance-1:~/directory ~/Desktop/ 我尝
我正在尝试获取Youtube的评论,但它引发了此异常- {“Google.Apis.Requests.RequestError \ r \ n权限不足:请求的身份验证范围不足。[403] \ r \
我试图用 jmap 捕获 tomcat 进程转储,但是我得到错误“内存不足或附加权限不足”,显然有足够的内存,并且当前登录用户在角色本地管理员组中。如果我以管理员身份运行 cmd 命令,它仍然失败。
为了测试我们的应用程序,我需要插入/更新谷歌日历事件并验证边缘情况,比如 session 邀请是否超过 30 天,它不应该显示给最终用户。我正在为单个 gmail id testaccount@.co
我正在使用这个 endpoint : get_media(bucket=*, object=*, ifGenerationNotMatch=None, generation=None, ifMeta
我正在尝试将 Stripe 的 Connect 实现到我的应用程序中。我已经完成了数小时的研究和试错方法调试,现在我遇到的情况是没有出现技术错误,但出现错误: Insufficient funds i
我正在尝试在我的应用程序中使用静默推送通知,它似乎可以正常工作一两个小时,但在此期间之后将不会发送通知,并且我收到“高优先级推送:bundleID-资源不足”警告。任何人都知道可能是什么问题? 最佳答
我正在尝试使用以下命令添加以下条目: ldapadd -Y EXTERNAL -H ldapi:/// -f server5_ldap.ldif server5_ldap.ldif 的内容如下: #
我已完成描述的 Azure Cats&Dogs 教程 here我在 AKS 中启动应用程序的最后一步中遇到错误。 Kubernetes 报告我的 Pod 不足,但我不确定为什么会出现这种情况。几周前我
这是我在这里的第一个问题。 我一直想用流行的 IMDb 数据集创建一个数据集用于学习目的。目录如下: .../train/pos/和 .../train/neg/。我创建了一个函数,它将文本文件与其标
当我使用 gradle 构建时,它以信息失败: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000788800000
我正在执行 https://hub.docker.com/r/apache/nifi 的“独立实例,双向 SSL”部分中的步骤。 .但是,当我访问 NiFi 页面时,我的用户权限不足。以下是我正在使用
我在向部署在我的 Google Cloud Kubernetes 集群中的 Spring Boot 应用程序发送请求时遇到困难。我的应用程序收到一张照片并将其发送到 Google Vision API
我开发了第一个 Firestore 应用程序并没有真正意识到我没有构建权限模型,事实上我后来用 bolt 固定了它。 (如果这是问题的根源,我愿意接受有关权限最佳实践和/或如何更好地实现权限规则的反馈
我在 Ubuntu 上遇到 Apache-Karaf 3.0.0 的问题我想用命令“start”启动一个包。但我收到以下错误: Error executing command: Insufficien
我在 Ubuntu 12.04 上新部署服务器程序“MyServer”时遇到问题。该程序在第一台机器上运行良好。 但是在新机器上,MyServer程序在mysql_init()期间返回异常:“内存不足
所以我刚开始用 CUDA 编写,遵循 An Even Easier Introduction to CUDA指导。到目前为止,一切都很好。然后我想实现一个神经网络,这让我对函数 cudaMallocM
我正在用 c++ 风格的 opencv 2.3 开发一个项目。 在应用程序中,我加载视频并处理每一帧,并对 Mat 对象做一些事情。一段时间后,我收到内存不足错误。 我像这样捕捉帧: FCapture
我正在使用 web3.js v1.0.0-beta.34 和 nodeJS v9.11.2 在 Kovan 测试网上执行智能合约。同样的方法适用于我在 Ropsten 上使用另一个智能合约。这是我通过
我是一名优秀的程序员,十分优秀!