小编Fyl*_*lax的帖子

找不到源类型'System.Data.Entity.DbSet'的查询模式的实现

我是第一次使用Entity Framework,但似乎没有按预期工作.

我有这个代码:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

public static class QueryClass
{
    public static void Query()
    {
        using (var context = new MyDbEntities())
        {
            DbSet<MyTable> set = context.Tables;
            var query = from val in set select value; 

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在查询行(确切地说"set"变量用红色下划线)我得到错误:

无法找到源类型'System.Data.Entity.DbSet'的查询模式的实现.'选择'未找到.缺少'System.Linq'的引用或using指令

MyDbEntities是由Entity Framework在Database-First方法中自动生成context.TablesDbSet,因此它应该能够使用Linq,它已经通过该using指令添加了.为了避免误解,我在本课程中找到以下内容:

public virtual DbSet<MyTable> Tables { get; set; }
Run Code Online (Sandbox Code Playgroud)

为了完成这项select工作,我错过了什么?

谢谢.

c# linq entity-framework

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

CMake 不调用 FLEX/BISON

我有以下 CMake 文件,它是一个更大项目的一部分(因此在其文件夹中并由上层使用 add_subdirectory(...)

find_package(BISON REQUIRED)
find_package(FLEX REQUIRED)

include_directories(${PROJECT_SOURCE_DIR}/include/Parser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})

bison_target(XPathParser
        XPath.yy
        ${CMAKE_CURRENT_BINARY_DIR}/XPathParser.cpp
        DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/XPathParser.h)

flex_target(XPathScanner
        XPath.flex
        ${CMAKE_CURRENT_BINARY_DIR}/XPathScanner.cpp
        COMPILE_FLAGS "-Cm -B -L --c++ --nounistd")

add_flex_bison_dependency(XPathScanner XPathParser)

set_source_files_properties(${BISON_XPathParser_OUTPUTS}
                            ${FLEX_XPathScanner_OUTPUTS}
                            PROPERTIES
                            COMPILE_FLAGS -Wno-sign-compare
                            COMPILE_FLAGS -Wno-effc++)

add_library(xpath OBJECT
        ${BISON_Parser_OUTPUTS}
        ${FLEX_Lexer_OUTPUTS}
        ${CMAKE_CURRENT_LIST_DIR}/XPathParserDriver.cpp)
Run Code Online (Sandbox Code Playgroud)

据我所知,这个 CMake 应该执行 FLEX 和 BISON,然后在实际的 C++ 编译器调用之前生成 C++ 文件。

出于某种超出我理解的原因,这不是真的。我试图清除 CMake 缓存并从头开始重新运行它;尽管如此,在 CMake 生成的文件中没有 FLEX 或 BISON 的迹象。

当然,CMake 找到了 FLEX 和 BISON 并正确设置了bison_targetflex_target宏(我通过添加随机值来测试它:CMake 生气并向我抛出错误)。

关于发生了什么以及我错过了什么的任何线索?

c++ cmake bison flex-lexer

3
推荐指数
1
解决办法
370
查看次数

自定义支撑初始化器

假设我有这个结构:

struct MyStruct {
    int field1;
    char *field2;
    MyStruct(int a, char* b): field2(b) {
        field1 = doStuff(a);
    }
    MyStruct(int a): MyStruct(a, nullptr) {}
    ~MyStruct();
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这不是一个聚合,因为我有一些构造函数.

我想要实现的是以自定义方式使用花括号初始化程序,这意味着使用如下代码:

MyStruct x = { 1, "string" };
Run Code Online (Sandbox Code Playgroud)

它隐式调用正确的构造函数(在本例中是第一个).

这有可能吗?

c++ uniform-initialization list-initialization

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