6

我正在针对现有模式使用 EF 进行评估 - 问题是我无法弄清楚如何在外键不是主表的主键的表之间建立关联。

例如, afoo可能有很多bars像这样定义的(请原谅伪代码):

table foo {
  int foo\_id pk,
  char(10) foo\_code,
  ...
}

table foobar {
  int bar\_id pk,
  char(10) bar\_foo\_code fk(foo.foo\_code),
  ...
}

我缺少什么能够创建foo_foobar关联,从而在实体上创建Bars导航属性?Foo

4

1 回答 1

3

Linq to entity 不支持不指向表主键的外键(请参阅日志消息 3)。Linq to entity 会将其视为表上的普通字段。您将无法导航到它链接到的实体。

如果您有现有的架构,我建议您使用edm 生成器,因为这将创建 EMDX 文件、隐藏代码甚至视图代码(可能非常大)。如果您现有的方案非常大,请查看这篇文章,其中解释了如何处理大型模式。

当您运行 EDM 生成器时,您会发现所有不支持的内容。

查看以前的 EDMGen2.exe 日志,我们得到以下类型的消息:


  1. 支持数据类型“sql_variant”,排除了表“TableName”中的“ColumnName”列。
  2. 表/视图“tableName”没有定义主键。已推断出密钥,并将定义创建为只读表/视图
  3. 关系“RelationshipName”的列不属于该关系的主要侧的表的键,不支持,该关系已被排除。

我们还发现 Linq 项目实际上使 Visual Studio 崩溃了很多,因为 EDM 生成的代码文件远远超过 80 mb。

于 2009-03-12T13:32:04.353 回答