我对实体框架非常陌生,所以我不知道其中使用的技术术语。我很抱歉我的英语不好。
我正在一个项目中工作,其中包含实体框架并有一个.edmx
文件。该文件具有在其中创建的实体。
所以我创建了 2 个实体并将其命名为 TableA 和 TableB。pid 是 TableA 的实体键, cid 是 TableB 的实体键。并在其中创建了多对一的关系。即 TableA row1 可以有 TableB_cid=1 TableA row2 也可以有 TableB_cid=2
然后我做了“从模型生成数据库”
CREATE TABLE [TableA] (
[pid] nvarchar(max) NOT NULL,
[name] nvarchar(max) NOT NULL,
[TableB_cid] nvarchar(max) NOT NULL
);
GO
CREATE TABLE [TableB] (
[cid] nvarchar(max) NOT NULL,
[name] nvarchar(max) NOT NULL
);
pid|name|TableB_cid
--------------------
1 | a | 2
2 | b | 2
3 | c | 1
cid|name
------------
1 | s
2 | f
现在在我写的 C# 代码中,
TableA obj = repository.All().Single(w=>w.pid == "1")
context.Entry<TableA>(obj).Reference<TableB>(o => o.TableB).Load();
现在这将加载 cid=1 的 TableB(但我真正想要的是加载 cid=2 的 TableB)。
我认为它的主键与主键匹配,而不是 TableB_cid (TableA) 与 cid (TableB) 匹配。
所以我做错了什么请帮忙。
编辑:
简而言之,我正在寻找一种方法,可以在 Entity Framework 4.0 中添加表 A 的非主列与表 B 的主列的关联。而且我不想使用 linq 查询和连接。我已经尝试过,但我无法在 edmx 文件中找到可以做到的方法或选项。
谢谢,
米