【发布时间】:2011-02-15 09:14:13
【问题描述】:
我正在尝试通过 DbModel 映射数据库中存在的这种关系。
CREATE TABLE core.Institutes
(
ID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(128) NOT NULL,
OldID INT NULL
)
GO
CREATE TABLE core.InstitutePlaces
(
FKInstituteID INT NOT NULL PRIMARY KEY REFERENCES core.Institutes(ID),
FKPlaceID INT NOT NULL REFERENCES core.Places(ID)
)
GO
CREATE TABLE core.Places
(
ID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(128) NOT NULL,
FKParentID INT NULL REFERENCES core.Places(ID),
OldID INT NULL
)
GO
在这个模型上
public class Place
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public Place Parent { get; set; }
}
public class Institute
{
public int Id { get; set; }
public string Name { get; set; }
public Place Place { get; set; }
}
我们正在使用类似的东西来进行映射
modelBuilder.Entity<Institutes.Institute>().HasOptional(i => i.Place);
但它不起作用:(
这个场景完全由 EDML 文件管理,所以问题只在于映射。
【问题讨论】:
-
我相信你的模型可以让 1 到 * 工作,导航属性需要是 ICollection
Institutes {get; set;},要启用延迟加载,请将属性设为虚拟。这是一个关于 EFCF CPT5 的好博客 weblogs.asp.net/manavi/default.aspx -
谢谢,但我们希望避免使用从 Place 到 Institutes 的导航属性,因为它对我们从 Place 到其 Institute 或与该特定地点链接的其他实体没有任何意义.
标签: code-first entity-framework-ctp5