标签: devart

System.Data.MetadataException:无法加载指定的元数据资源

我的连接字符串如下:

<add name="RollCallDBEntities" connectionString="metadata=res://System.Engine/RollcallNS.csdl|res://System.Engine/RollcallNS.ssdl|res://System.Engine/RollcallNS.msl;provider=Devart.Data.Oracle;provider connection string=&quot;User Id=user;Password=password;Server=127.0.0.1;Direct=True;Sid=ORCL&quot;" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

using (var db= new RollCallDBEntities()) //ok
{
   var query = db.TBL_ROLLCALL.ToList(); //Unable to load the specified metadata resource.
}
Run Code Online (Sandbox Code Playgroud)

我的集会:

System.Engine
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

这些链接没有解决我的问题:
MetadataException:无法加载指定的元数据资源
实体框架无法加载指定的元数据资源
实体框架:无法加载指定的元数据资源
无法加载指定的元数据资源

c# entity-framework devart edmx asp.net-mvc-3

23
推荐指数
3
解决办法
5万
查看次数

CLOB与VARCHAR2还有其他选择吗?

我正在为我的应用程序使用DevArt的dotConnect和Entity Developer.我使用Entity-First功能创建了表格.

我注意到许多列类型都设置为CLOB.我只有MySQL和Microsoft SQL服务器的经验,所以我不确定是否将CLOB用于该应用程序.我做了一些阅读,发现CLOB用于大量数据.

问题是:

  1. 在大多数字段中使用CLOB,例如用户的性别(应该是varchar(1))还是全名,可行吗?将CLOB字段转换为VARCHAR2的步骤需要删除列然后重新创建它,并且在DevArt的实体资源管理器中有问题,所以我想尽可能避免使用它.编辑:我刚刚发现,如果为字符串字段设置最大长度,它将自动为VARCHAR2.

  2. Oracle中的TINYTEXT是否有任何等价物?

oracle devart oracle11g dotconnect

11
推荐指数
2
解决办法
2万
查看次数

我们可以使用Skip(),Take()和OrderBy()来控制LINQ表达式顺序吗?

我正在使用LINQ to Entities来显示分页结果.但我在使用的组合问题Skip(),Take()OrderBy()调用.

一切正常,除了OrderBy()分配得太晚.之后的结果集已被削减它的执行Skip()Take().

因此,每个结果页面都按顺序排列.但是,对一页数据进行排序,而不是对整个集合进行排序,然后使用Skip()和限制这些记录Take().

如何设置这些语句的优先级?

我的例子(简化)

var query = ctx.EntitySet.Where(/* filter */).OrderByDescending(e => e.ChangedDate);
int total = query.Count();
var result = query.Skip(n).Take(x).ToList();
Run Code Online (Sandbox Code Playgroud)

一种可能(但不好)的解决方案

一种可能的解决方案是将聚簇索引应用于按列排序,但此列经常更改,这会降低插入和更新时的数据库性能.我真的不想那样做.

编辑

我运行ToTraceString()了我的查询,我们实际上可以看到order by应用于结果集.不幸的是最后.:(

SELECT 
-- columns
FROM  (SELECT 
    -- columns
    FROM   (SELECT -- columns
        FROM ( SELECT 
            -- columns
            FROM table1 AS Extent1
            WHERE  EXISTS (SELECT 
                -- single constant column
                FROM table2 AS Extent2
                WHERE (Extent1.ID = …
Run Code Online (Sandbox Code Playgroud)

mysql linq linq-to-entities devart dotconnect

10
推荐指数
1
解决办法
3312
查看次数

如何使用Entity Framework在oracle包中调用存储过程?

我在oracle 11g中有一个包如下:

CREATE OR REPLACE PACKAGE "HRS.PKG_TRAINING_SP" as
TYPE T_CURSOR IS REF CURSOR;

procedure GETPERSONNELTRAINIGLIST(
        personnel_Id_in in string,
        base_date_in in string,
        is_current_in in number,
        lst OUT T_CURSOR );
end;
Run Code Online (Sandbox Code Playgroud)

如何GETPERSONNELTRAINIGLIST使用Entity Framework(代码优先)执行上述过程package()?

注意:我正在使用Entity Framwork 6.0(代码优先)和devart EF Providerfor Oracle.

更新: 我使用以下代码:

var param1 = new OracleParameter("personnel_Id_in", OracleDbType.VarChar, "c5eb5589-8fee-47b6-85ad-261a0307cc16", ParameterDirection.Input);
var param2 = new OracleParameter("base_date_in", OracleDbType.VarChar, "1112", ParameterDirection.Input);
var param3 = new OracleParameter("is_current_in", OracleDbType.Number, 1, ParameterDirection.Input);

var ATests =
    db.Database.SqlQuery<ATest>(
    "BEGIN PKG_TRAINING_SP.GETPERSONNELTRAINIGLIST(:personnel_Id_in, :base_date_in, :is_current_in); end;", 
    param1,  param2, param3).ToList();
Run Code Online (Sandbox Code Playgroud)

但低于错误: …

c# oracle entity-framework devart oracle11g

8
推荐指数
1
解决办法
2万
查看次数

8
推荐指数
2
解决办法
4150
查看次数

Linq to Entities和LEFT OUTER JOIN问题与MANY:1关系

有人可以告诉我,为什么Linq to Entities会将多个关系转换为1个关系left outer join而不是inner join?因为对DB本身存在引用约束以确保在右表中有记录,所以inner join应该使用它(并且它将更快地工作)

如果关系很多,那么0..1 left outer join就是正确的.

是否有可能以某种方式编写LINQ,因此它将转换为inner join而不是left outer join.它会大大加快查询执行速度......我以前没有使用过eSQL,但在这种情况下使用它会是明智的吗?它会解决我的问题吗?

编辑

我更新了我的标签,以包含我在后台使用的技术:

  • 实体框架V1
  • Devart dotConnect for Mysql
  • MySql数据库

如果有人可以测试在Microsoft SQL服务器上是否也是如此,如果这是Devart的问题或者它是一般的L2EF功能,它也会给我一些见解......但我怀疑EF是罪魁祸首.

mysql linq-to-entities outer-join devart dotconnect

7
推荐指数
1
解决办法
2341
查看次数

TransactionScope不在wcf服务方法内回滚,如果直接调用则回滚

我正面临着一个让我疯狂几天的问题,希望有人可以帮助我.这里是 ;

我正在使用EF4和oracle数据库,使用dotConnect从devart作为提供者的oracle.我有wcf服务方法,它调用下面的DeleteCabinet方法;

public void DeleteCabinet(string pRID)
{
    using(TransactionScope tranScope = new TransactionScope())
    {
        DBUtils.DeleteCabinetAndShelves(pRecordId);

        //throw exception to test record not deleted
        throw new Exception("xxx something has happened test xxx");

        tranScope.Complete();
    }
}
Run Code Online (Sandbox Code Playgroud)

DBUtils.DeleteCabinetAndShelves如下所示;

public void DeleteCabinetAndShelves(string pRecordId)
{
    using(var context = new EdrmEntities())
    {
        var cabinet = context.Cabinets.Include("Shelves").Single(p => p.RID == pCabinetRID);

        //mark all cabinet shelves for deletion
        if (cabinet.Shelves != null)
        {
            foreach (var tempShelf in cabinet.Shelves.ToList())
            {
                context.DeleteObject(tempShelf);
            }
        }

        //mark cabinet for deletion
        context.DeleteObject(cabinet);

        //save 
        context.SaveChanges(); …
Run Code Online (Sandbox Code Playgroud)

oracle transactionscope rollback devart dotconnect

7
推荐指数
1
解决办法
1693
查看次数

Oracle Connectionstring上的Unicode参数

为什么Oracle ODP不识别参数Unicode = true和Devart的Provider呢?

当我有包含字符串的数据:"ñãõ,éóúý"时,我的asp.net应用程序显示"???,????" 如果我使用的是Oracle的ODP.当我尝试将属性Unicode=true放在connectionstring中时,它表示它是一个无效的属性.

Devart的提供商也可以复制相同的行为.但实际上,当我将Unicode=true属性放在连接字符串中时,所有内容都很好地显示在我的asp.net应用程序的屏幕上.

为什么会这样?我可以在Oracle Data Provider(Oracle.DataAccess.Client)中使用哪个属性,以便我可以按照我想要的方式显示我的角色?

oracle odp.net character-encoding devart

7
推荐指数
1
解决办法
5413
查看次数

这是lambda吗?如果不是什么?

几天前我正在尝试从Devart开始使用名为EntityDAC的delphi的新ORM,我正在阅读特定于LINQ部分的文档,当我看到类似的内容时:

Linq.From(Emp).Where(Emp['Sal'] > 1000)
Run Code Online (Sandbox Code Playgroud)

我得说,在我看到的第一刻唤醒我.表达"Emp ['Sal']> 1000"不是lambda表达式?!因为试用版本是这个组件没有来源我无法弄清楚如何声明函数/过程.

参考:http://www.devart.com/entitydac/docs/ - > Linq查询 - > Linq语法 - >向下滚动到Where会话

delphi orm devart

7
推荐指数
1
解决办法
450
查看次数

如何将DataTable(或类似)与Oracle DB一起使用

我最近一直在处理一些性能问题,并试图找出如何以指数方式提高某些Oracle数据库调用的性能.

技术:

我熟悉DataTableDapper和SQL Server 的使用和表值参数,并希望使用上述技术复制它.我还没有能够重现下面的解决方案来使用Devart和OracleManaged:

下面的代码不是我正在运行的......这是一个释义的例子.我只需要与Oracle一起工作的东西来传递DataTable或在查询/插入中使用的对象数组.

SQL Server:

CREATE TYPE MyCustomerInfo AS TABLE
(
    Id BIGINT NOT NULL,
    --Name NVARCHAR(32) NOT NULL,
    --...
);
Run Code Online (Sandbox Code Playgroud)

C#for SQL Server:

const string getCustomersSql = @"
    SELECT
        c.Id,
        --c.Name
        --...
    FROM @myCustomers mc
    LEFT JOIN Customers c
        ON c.Id = mc.Id";

var myCustomers = new DataTable();
myCustomers.Columns.Add("Id", typeof(long));
//...

myCustomers.Rows.Add(1);
myCustomers.Rows.Add(2);

var customers = await sqlDbConnection.QueryAsync<Customer>(getCustomersSql, new { myCustomers = myCustomers.AsTableValuedParameter("MyCustomerInfo") }); …
Run Code Online (Sandbox Code Playgroud)

c# devart dapper oracledb .net-core-2.0

6
推荐指数
1
解决办法
508
查看次数