我正在使用MVC(第一次)使用Entity框架,数据库优先
我想要做的是在单个视图中显示数据库中的数据.我首先创建了数据库,然后根据包含所有表的数据库创建了一个ADO.NET实体数据模型.然后我创建了一个使用我的实体数据模型作为模型强类型的索引视图.
在我的索引中,我有顶部
@model IEnumerable<Forum6.Models.Forum>
Run Code Online (Sandbox Code Playgroud)
这允许我从我的数据库中获取表"论坛"中的行.如果我尝试添加额外的模型,我得到运行时收到此错误消息:
Run Code Online (Sandbox Code Playgroud)Line 1: @model IEnumerable<Forum6.Models.Forum> Line 2: @model2 IEnumerable<Forum6.Models.Post>分析器错误消息:文件中只允许一个"模型"语句.
在找到答案之后我发现了这个:ASP MVC 3中的一个视图中的两个模型 答案是创建一个包含所有模型(表)的ViewModel(ParentModel).这是我创建的ViewModel:
public class ViewModel
{
public IEnumerable<Forum6.Models.Forum> Forum { get; set; }
public IEnumerable<Forum6.Models.Post> Post { get; set; }
public IEnumerable<Forum6.Models.Topics> Topics { get; set; }
public IEnumerable<Forum6.Models.Users> Users { get; set; }
public IEnumerable<Forum6.Models.PrivMsg> PrivMsg { get; set; }
public IEnumerable<Forum6.Models.Permission> Permission { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我编辑我的控制器看起来像这样:
public class HomeController : Controller
{
// ForumDBEntities old_db = new ForumDBEntities(); …Run Code Online (Sandbox Code Playgroud) 我花了很长的时间学习OSGi,但我仍然觉得这个难题的关键部分似乎已经消失了。
这是我的用例:
我正在使用JAX-RS(Grizzly)创建REST API。我有一个具有许多不同实现的接口。我的解决方案应该能够随时添加新的实现。
基于某种形式的输入,我必须掌握这些特定实例中的一个。例如,假设我向Felix Interface A和注册了两个接口实现Interface B。用户应该能够要求Implementation B
通过使用从运行中获得的命令行felix.jar(Apache Felix Gogo),我已经能够安装和启动自己的捆绑软件。我现在面临的问题是我应该如何从一个控制器中检索任何这些实现。
这是我的一种实现的激活程序的代码。
public class MyClassActivator implements BundleActivator {
@Override
public void start(BundleContext context) throws Exception {
System.out.println("Starting ImplementationA");
Hashtable<String, String> props = new Hashtable<>();
props.put("Identifier", "ImplementationA");
context.registerService(MyInterface.class.getName(), new MyClassA(), props);
}
@Override
public void stop(BundleContext context) throws Exception {
System.out.println("Stopping ImplementationA");
}
private class ImplementationA implements MyInterface {
/*my implementation*/
}
}
Run Code Online (Sandbox Code Playgroud)
从我的一个JAX-RS类中,我想以某种方式这样做:
MyInterface myclassA = getBundle("ImplementationA");
Run Code Online (Sandbox Code Playgroud)
字符串ImplementationA与我在道具图中放置的字符串相同。
到目前为止,我尝试过的是
BundleContext bc …Run Code Online (Sandbox Code Playgroud) 我试图在网上找到解决问题的方法,但我没有成功.我认为我的问题可能与链接有关.
我有3个文件scanner.h,scanner.cpp而且scanner_test.h我已经修剪了文件,尽我所能.
scanner.h
class Scanner {
public:
Token *scan (const char *);
};
Run Code Online (Sandbox Code Playgroud)
scanner.cpp
#include "scanner.h"
Token scan(const char *text){
// Do something code
}
Run Code Online (Sandbox Code Playgroud)
scanner_test.h
#include "scanner.h"
Scanner *s ;
void test_setup_code ( ) {
s = new Scanner() ;
}
Token *tks = s->scan ( text ) ; //This line gives the error
Run Code Online (Sandbox Code Playgroud)
我尝试编译和运行时的错误来自scanner_test.h undefined reference to `Scanner::scan(char const*)
这是我对代码的理解:
scanner_test.h包括在编译期间scanner.h链接到的文件,scanner.cpp该文件具有for的定义Scanner::scan(char const*)