Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EF6 LINQ铸柱_Linq_Entity Framework_Casting - Fatal编程技术网

EF6 LINQ铸柱

EF6 LINQ铸柱,linq,entity-framework,casting,Linq,Entity Framework,Casting,我的实体有一个名为Value的字段。此字段是一个字符串,但它也包含int和DateTime值 我的常规查询类似于 SELECT * FROM tableA WHERE entityType=@eID and CAST(value as int/datetime/varchar)==@value 如何使EF生成带有强制转换的查询 编辑:在上创建建议以下是示例: int eId = 1; int valueInt = 1; DateTime val

我的实体有一个名为
Value
的字段。此字段是一个
字符串
,但它也包含
int
DateTime

我的常规查询类似于

SELECT * FROM tableA 
WHERE entityType=@eID and CAST(value as int/datetime/varchar)==@value
如何使EF生成带有强制转换的查询

编辑:在

上创建建议以下是示例:

        int eId = 1;
        int valueInt = 1;
        DateTime valueDateTime = DateTime.Now;
        string valueString = "Test";

        TableA result;
        switch (eId)
        {
            case 1: result = context.tableA.Where(x => x.entityType == eId && Convert.ToInt32(x.value) == valueInt); break;
            case 2: result = context.tableA.Where(x => x.entityType == eId && Convert.ToDateTime(x.value) == valueDateTime); break;
            case 3: result = context.tableA.Where(x => x.entityType == eId && x.value == valueString); break;
        }

它由EF团队实施和完成。检查问题上列出的用户发票链接

您能告诉我如何基于
entityType
强制转换值吗?@teovankot entityType是另一个告诉我是否应强制转换为int、datetime或varchar的字段。。。ID=1表示int,2表示datetime,0表示string…您绝对应该以另一种方式执行此操作:将
@value
转换为所需的类型。在比较数据库字段之前将函数应用于这些字段会损害索引。如果无法在将其与本地日期进行比较之前将其转换为datetime,那么DateTimeOffset字段的意义何在?在将其作为答案发布之前,您是否对其进行了测试?没有,但linq可以正确地将转换函数转换为sql?真的吗?你能指出任何支持这种说法的消息来源吗?我已经找了很久了。。。到目前为止没有运气…这里是LINQtoSQL不支持的
toInt32
toDateTime
未在此处列出,因此我相信它们应该可以工作:)但请注意最新时间我相信sql server上当前的
排序规则会影响转换,但您始终可以看到分析器中发生的情况:)Convert.toInt32绝对不受支持。